Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.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将包含矩阵形式数据的txt文件读入与文件中相同维度的2d数组_Java - Fatal编程技术网

如何使用java将包含矩阵形式数据的txt文件读入与文件中相同维度的2d数组

如何使用java将包含矩阵形式数据的txt文件读入与文件中相同维度的2d数组,java,Java,这是我的密码: import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.StringTokenizer; public class csvimport5 { public static void main(String[] args) throws IOException {

这是我的密码:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;


public class csvimport5 {


    public static void main(String[] args) throws IOException {


        double [][] data = new double [87][2];  
        File file = new File("buydata.txt");
        int row = 0;
        int col = 0;
        BufferedReader bufRdr  = new BufferedReader(new FileReader(file));
        String line = null;


        //read each line of text file
        while((line = bufRdr.readLine()) != null && row < data.length)
        {   
        StringTokenizer st = new StringTokenizer(line,",");
        while (st.hasMoreTokens())
        {
            //get next token and store it in the array
            data[row][col] = Double.parseDouble(st.nextToken());
            col++;
        }
        col = 0;
        row++;
        }

        System.out.println(" "+data[87][2]);  

      }

    }
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.StringTokenizer;
公共类csvimport5{
公共静态void main(字符串[]args)引发IOException{
双精度[]数据=新双精度[87][2];
File File=新文件(“buydata.txt”);
int行=0;
int col=0;
BufferedReader bufRdr=新的BufferedReader(新文件读取器(文件));
字符串行=null;
//读取文本文件的每一行
while((line=bufRdr.readLine())!=null&&row
它显示错误:-numberformatException:空字符串


请帮助我

在您的文件中的某个时刻,st.nextToken()返回一个空字符串。因为您试图将其解析为一个Double,所以您得到了一个错误(空字符串中没有可以从中获取Double的数字)

最常见的原因是输入数据不正确。您是否能够提供buydata.txt文件的子集,从而导致出现错误?

正如所建议的,错误的原因是输入文件中的某些格式错误的字符串,导致
parseDouble()
抛出
NumberFormatException
。您应该将其排序为
尝试。。。捕捉
。你可以这样做:

// set val to a constant value that you know is not acceptable
dobule val = UNACCEPTABLE_VALUE;
String token = st.nextToken();

try {
  val = Double.parseDouble(st.nextToken());
} catch (NumberFormatException e) {
  System.err.println("bad value: " + token + " at line: " + line);
}

data[row][col] = val;

col++