Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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_Jagged Arrays - Fatal编程技术网

Java 将文本文件解析为锯齿数组

Java 将文本文件解析为锯齿数组,java,jagged-arrays,Java,Jagged Arrays,我有以下文件 3 2,3,4,5 6,7,8 9,10 我试着把它转换成双精度的锯齿状数组。我的意思是,我试图将其存储为 double[][] myArray = {{2,3,4},{6,7},{9}} double[] secondArray = {5,8,10} 我已经能够从文件中读取值,但我在两件事上卡住了 如何将值转换为双数组 如何将最后的元素存储到新数组中 我面临这个错误,因为我的数组包含逗号分隔的值,但是如何将单个值转换为double?我还是Java新手,所以我不知道所有的内置方

我有以下文件

3
2,3,4,5
6,7,8
9,10
我试着把它转换成双精度的锯齿状数组。我的意思是,我试图将其存储为

double[][] myArray = {{2,3,4},{6,7},{9}}
double[] secondArray = {5,8,10}
我已经能够从文件中读取值,但我在两件事上卡住了

  • 如何将值转换为双数组
  • 如何将最后的元素存储到新数组中
  • 我面临这个错误,因为我的数组包含逗号分隔的值,但是如何将单个值转换为double?我还是Java新手,所以我不知道所有的内置方法

    这是我到目前为止所拥有的

    public double[] fileParser(String filename) {
    
        File textFile = new File(filename);
        String firstLine = null;
        String secondLine = null;
        String[] secondLineTokens = null;
    
        FileInputStream fstream = null;
        try {
            fstream = new FileInputStream(filename);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    
        BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
        try {
            firstLine = br.readLine(); // reads the first line
            List<String> myList = new ArrayList<String>();
            while((secondLine = br.readLine()) != null){
                myList.add(secondLine);
                //secondLineTokens = secondLine.split(",");
    
            }
    
            String[] linesArray = myList.toArray(new String[myList.size()]);
            for(int i = 0; i<linesArray.length; i++){
                System.out.println("tokens are: " + linesArray[i]);
            }
    
            double[] arrDouble = new double[linesArray.length];
            for(int i=0; i<linesArray.length; i++)
            {
               arrDouble[i] = Double.parseDouble(linesArray[i]); #error here
            }
    
    
    
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    
    public double[]文件解析器(字符串文件名){
    文件textFile=新文件(文件名);
    字符串firstLine=null;
    字符串第二行=null;
    字符串[]secondLineTokens=null;
    FileInputStream fstream=null;
    试一试{
    fstream=新文件输入流(文件名);
    }catch(filenotfounde异常){
    //TODO自动生成的捕捉块
    e、 printStackTrace();
    }
    BufferedReader br=新的BufferedReader(新的InputStreamReader(fstream));
    试一试{
    firstLine=br.readLine();//读取第一行
    List myList=new ArrayList();
    而((secondLine=br.readLine())!=null){
    myList.add(第二行);
    //secondLineTokens=secondLine.split(“,”);
    }
    String[]linesArray=myList.toArray(新字符串[myList.size()]);
    
    对于(int i=0;i而言,第一行似乎给出了文件其余部分的行数。您可以利用它预先生成数组,如下所示:

    int n = Integer.parseInt(br.readLine());
    double a[][] = new double[n][];
    double b[] = new double[n];
    for (int i = 0 ; i != n ; i++) {
        String[] tok = br.readLine().split(",");
        a[i] = new double[tok.length-1];
        for (int j = 0 ; j != a[i].length ; j++) {
            a[i][j] = Double.parseDouble(tok[j]);
        }
        b[i] = Double.parseDouble(tok[tok.length-1]);
    }
    
    类似地,您可以使用
    String.split
    方法来确定要添加到交错数组中的条目数量。这样,代码会变得更短,因为您可以预先分配所有数组