Java 坚持二维阵列
我正试图编写一个程序来读取一个文本文件(很好),该文件包含一个双精度列表,如下所示:Java 坚持二维阵列,java,for-loop,multidimensional-array,Java,For Loop,Multidimensional Array,我正试图编写一个程序来读取一个文本文件(很好),该文件包含一个双精度列表,如下所示: 1.0, 2.0, 3.0 4.0, 5.0, 6.0 7.0, 8.0, 9.0 _ 但我得到的是: [[7.0, 0.0, 0.0], [8.0, 0.0, 0.0], [9.0, 0.0, 0.0]] 我已经看到我的问题在于sec变量保持不变,但我不确定如何在不改变整个代码结构的情况下重新排列代码 任何提示都将不胜感激。这应该像预期的那样起作用 int pos = 0; while(i
1.0, 2.0, 3.0
4.0, 5.0, 6.0
7.0, 8.0, 9.0
_
但我得到的是:
[[7.0, 0.0, 0.0], [8.0, 0.0, 0.0], [9.0, 0.0, 0.0]]
我已经看到我的问题在于sec变量保持不变,但我不确定如何在不改变整个代码结构的情况下重新排列代码
任何提示都将不胜感激。这应该像预期的那样起作用
int pos = 0;
while(inputStream.hasNextLine()) {
String line = inputStream.nextLine();
String[] lineList = line.split(", ");
for(int motor = 0; motor < 3; motor++) {
double lineDouble = Double.parseDouble(lineList[motor]);
arrayNums[pos][motor] = lineDouble;
}
pos++;
}
System.out.println(Arrays.deepToString(arrayNums));
int pos=0;
while(inputStream.hasNextLine()){
String line=inputStream.nextLine();
String[]lineList=line.split(“,”);
用于(int motor=0;motor<3;motor++){
double-lineDouble=double.parseDouble(lineList[motor]);
arrayNums[pos][motor]=lineDouble;
}
pos++;
}
System.out.println(Arrays.deepToString(arrayNums));
不要忘记删除第一个循环。int sec=0;
int sec = 0;
while (inputStream.hasNextLine()) {
String line = inputStream.nextLine();
String[] lineList = line.split(", ");
for (int i = 0; i < lineList.length; i++) {
arrayNums[sec][i] = Double.parseDouble(lineList[i]);
}
sec++;
}
while(inputStream.hasNextLine()){
String line=inputStream.nextLine();
String[]lineList=line.split(“,”);
对于(int i=0;i
也就是说,如果您没有预料到文件中的行数(即,文件中的行数大于数组中的行数),则会在内部
for
循环中引发异常,您需要删除while循环
这将为您提供预期结果:[[1.0,2.0,3.0]、[4.0,5.0,6.0]、[7.0,8.0,9.0]]
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;
public class ReadMatrix {
public static void main(String[] args) {
String fileName = "tstc.txt";
int nRow = 3;
int nCol = 3;
double[][] arrayNums = new double[nRow][nCol];
try (Scanner inputStream = new Scanner(new FileInputStream(fileName))) {
for (int i = 0; i < nRow; i++) {
String line = inputStream.nextLine();
String[] lineList = line.split(", ");
for (int j = 0; j < nCol; j++) {
double lineDouble = Double.parseDouble(lineList[j]);
arrayNums[i][j] = lineDouble;
}
}
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
System.out.println("Program aborted.");
return;
}
System.out.println(Arrays.deepToString(arrayNums));
}
}
import java.io.FileInputStream;
导入java.io.FileNotFoundException;
导入java.util.array;
导入java.util.Scanner;
公共类读取矩阵{
公共静态void main(字符串[]args){
字符串fileName=“tstc.txt”;
int nRow=3;
int-nCol=3;
double[]arrayNums=新的double[nRow][nCol];
try(Scanner inputStream=new Scanner(new FileInputStream(fileName))){
对于(int i=0;i
您不需要sec循环,因为您已经拥有了InputStream One First,非常感谢您的帮助!问题是,实际上,我将从中读取的文本文件将有数百列(要读取的行)。这就是为什么我真的试图这样构造arrayNums:arrayNums[motor][pos]。节省内存,更实用,更易于导航。[motor]实际上应该表示汽车,而[pos]表示速度。文件中的每一行都是随后的第二行,说明了汽车的速度。是否有任何方式来适应这一点?很抱歉之前没有说得更清楚。@AndréFoote如果我理解得足够清楚,您应该更改变量名称。但是如果你还有其他问题,不要犹豫,创建一个新的,因为这个问题已经得到了回答,它也会得到其他用户更多的关注。首先,非常感谢你的帮助!问题是,实际上,我将从中读取的文本文件将有数百列(要读取的行)。这就是为什么我真的试图这样构造arrayNums:arrayNums[I][sec]。节省内存,更实用,更易于导航。[i] 实际上应该表示汽车,而[sec]表示速度。文件中的每一行都是随后的第二行,说明了汽车的速度。是否有任何方式来适应这一点?对不起,之前没有说清楚。
int sec = 0;
while (inputStream.hasNextLine()) {
String line = inputStream.nextLine();
String[] lineList = line.split(", ");
for (int i = 0; i < lineList.length; i++) {
arrayNums[sec][i] = Double.parseDouble(lineList[i]);
}
sec++;
}
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;
public class ReadMatrix {
public static void main(String[] args) {
String fileName = "tstc.txt";
int nRow = 3;
int nCol = 3;
double[][] arrayNums = new double[nRow][nCol];
try (Scanner inputStream = new Scanner(new FileInputStream(fileName))) {
for (int i = 0; i < nRow; i++) {
String line = inputStream.nextLine();
String[] lineList = line.split(", ");
for (int j = 0; j < nCol; j++) {
double lineDouble = Double.parseDouble(lineList[j]);
arrayNums[i][j] = lineDouble;
}
}
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
System.out.println("Program aborted.");
return;
}
System.out.println(Arrays.deepToString(arrayNums));
}
}