我已经能够使用创建一个数组。txt文件。然而,现在打印阵列时,它会重复打印最后一行,而不是之前的行。我相信我分配了正确的值,并确保将它们分配给数组。
我试着循环并给每个索引分配正确的值,然后沿着每一行往下走,直到它们都被分配。然而,这会导致最终覆盖一切。
private double[][] Grid;
public GridMonitor(String filename) throws FileNotFoundException
{
Scanner FileName = new Scanner(new BufferedReader(new FileReader(filename)));
int totalRow = 0;
while (FileName.hasNextLine())
{
String[] string = FileName.nextLine().trim().split(" ");
totalRow++;
Grid = new double[totalRow][string.length];
for(int i = 0; i < totalRow; i++)
{
for(int j = 0; j < string.length; j++)
{
Grid[i][j] = Double.parseDouble(string[j]);
}
}
System.out.println(Arrays.deepToString(Grid));
}
System.out.println(Arrays.deepToString(Grid));
FileName.close();
}
它应该显示类似的结果
[3.0][3.0], [2.0][10.0][7.0], [5.0][6.0][9.0], [4.0][5.0][8.0]
但取而代之的是
[4.0][5.0][8.0],[4.0][5.0][8.0],[4.0][5.0][8.0],[4.0][5.0][8.0]
嵌套for循环中存在问题,网格每次都由同一行填充。移除外部循环,将行计数器初始化为0,并在外部while循环内递增。
int rc = 0;
while ( Filename.hasNextLine()){
// Code before Nested For loop
for(j=0;j<string.length;j++){
Grid[rc][j] = // your code
}
rc++;
}
你的问题是,你重复分配一个新的数组网格与网格=new双[总计行][string.length];
从而覆盖旧的值。
我想您可能会怀念这样的数组:double[]grid=new double[row][col],因此当您逐行阅读文件时,在获得最后一行之前,您无法找到行数。
public static double[][] readGridFromFile(Path file) throws FileNotFoundException {
final Pattern space = Pattern.compile("\\s+");
try (Scanner scan = new Scanner(new BufferedReader(new FileReader(file.toFile())))) {
List<double[]> lines = new ArrayList<>();
while (scan.hasNextLine()) {
lines.add(Arrays.stream(space.split(scan.nextLine().trim()))
.mapToDouble(Double::parseDouble)
.toArray());
}
double[][] grid = new double[lines.size()][];
int row = 0;
for (double[] line : lines)
grid[row++] = line;
return grid;
}
}
我正在学习图的结构和算法。从概念上讲,我理解DFS、BFS,并且我可以通过一个图来实现它们,但是传统上图是如何组成的呢? 通常,我将它们看作是以边为指针的节点列表、与它们连接的节点的边列表,或者是一个2D矩阵,其中两个节点的交点arr[node_a][node_b]是边的权重。 当涉及到实际构建它的输入,我不知道从哪里开始。
所以,我试图让我的程序从文本文件中读入一个结构数组,它编译得很好,但看起来并没有真正读入值?...我不知道为什么。这是代码的相关部分: 这是txt文件(标题:Planets.txt) 水星120 50 500 12.1 30 2金星120 50 500 29.1 30 6地球120 50 500 32.2 30 7月亮120 15 50 5.3 30 2火星120 50 500 12.2 30 4
问题内容: 我有一个像这样的数组: 我试图得到这样的数组: 每行(具有固定的任意宽度)都移动一个。A的数组是10k记录长,我试图在Numpy中找到一种有效的方法。目前,我正在使用vstack和for循环,这很慢。有没有更快的方法? 编辑: 问题答案: 实际上,有一种更有效的方法来执行此操作…使用etc的缺点是,您正在复制数组。 顺便说一句,这实际上与@Paul的答案相同,但我将其发布只是为了更详细
我在用Pandas将。txt文件转换为浮动值的数据目录时遇到了麻烦。我需要创建两列数据的散点图,但我一直得到错误“TypeError:Empty'DataFrame':no numeric data to plot”,所以我认为它是以字符串的形式读取数据。 下面是我运行df.info时得到的结果 列u_Vmag和u_B-V中没有任何测量值。 我觉得我只是错过了一些显而易见的东西。有人有什么建议吗?
问题内容: 我试图摆脱n维数组。有没有一种不错的API方法可以做到这一点?我知道两个流的连接方法。 问题答案: 假设您要以行优先的方式顺序处理数组的数组,这应该可以工作: 首先,它调用方法(其中推断为)以获取,然后方法将每个元素映射到using 方法。
我需要一些帮助:我正在做一个在Java的飞行花名册模拟。名册将容纳25名乘客,其中22名来自文本文件(passengerlist.txt)。对于每个乘客,有3个必需的数据点;姓名、座位等级和座位号和2个可选数据点数常旅客号码和常旅客点数。每个乘客都在自己的线路上,每个数据点都用逗号隔开。例如: 我有这个类,到目前为止还有构造函数: 我需要做的是从文本文件中读取每一行并创建数组,即使第一个look行