Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 坚持二维阵列_Java_For Loop_Multidimensional Array - Fatal编程技术网

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));
    }
}