Java 放置双值2d数组读取文本

Java 放置双值2d数组读取文本,java,arrays,file,Java,Arrays,File,我想把文本的双值放在2d数组上。我的文本有双精度和字符串值 我的文字 deneme deneme 4.5 5.5 6.6 7.5 9.9 9.9 dsdsa sddsf 9.9 8.7 7.5 8.8 4.4 6.5 ı从字符串中提取双精度值我的程序输出为 4.5 5.5 6.6 7.5 9.9 9.9 9.9 8.7 7.5 8.8 4.4 6.5 ı如何完成我的输出sextet。如果ı可以这样做,则ı将对每行进行排序 第一行:4.5.5.6.6 7.5.9.9 第二行:9.9 8.7.

我想把文本的双值放在2d数组上。我的文本有双精度和字符串值

我的文字

deneme deneme 4.5 5.5 6.6 7.5 9.9 9.9

dsdsa sddsf 9.9 8.7 7.5 8.8 4.4 6.5
ı从字符串中提取双精度值我的程序输出为

4.5 5.5 6.6 7.5 9.9 9.9 9.9 8.7 7.5 8.8 4.4 6.5
ı如何完成我的输出sextet。如果ı可以这样做,则ı将对每行进行排序

第一行:4.5.5.6.6 7.5.9.9

第二行:9.9 8.7.5 8.8 4.4 6.5

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

    ArrayList<String> puan;
    puan = okuDiziyeKoy("C:\\deneme\\HW.txt");
    System.out.format("%d kayıt okundu.%n", puan.size());

    for (int j = 0; j < puan.size(); j++) {

        String point = puan.get(j);

        String[] edit = point.split("[\\{\\}\\)]");

        for (String s : edit) {

            String a = s.replaceAll("[\\}\\-\\>\\>\\]\\[\\#\\*\\{]+", "");
            String b = a.replaceAll("[\\.]+", ",");
            Scanner scanner = new Scanner(b);

            while (scanner.hasNext()) {

                if (scanner.hasNextDouble()) {

                    Double doubleValue = scanner.nextDouble();
                    List<Double> numbers = new ArrayList<Double>();
                    numbers.add(doubleValue);
                    // System.out.println(Arrays.deepToString(numbers.toArray()));

                    final int col = 6;
                    final int rows = numbers.size() % col == 0 ? numbers.size() / col : numbers.size() / col + 1;
                    double[][] deneme = new double[rows][col];
                    for (int i = 0; i < rows; i++) {
                        for (int k = 0; k < col; k++) {
                            if (i == rows - 1 && k >= numbers.size() % col) 
                                break;
                            deneme[i][k] = numbers.get(k + col * i);       
                            System.out.print( deneme[i][k]+ " ");
                        }// for k end
                        System.out.println(); // go to next line
                    } // for i end

                }// if scan end

                else {

                    //if it is string comes value here
                    String stringValue = scanner.next();

                }// if scan end

            }// while end

        }// for string s

    }// for end

}// main end
publicstaticvoidmain(字符串[]args)引发IOException{
阿雷利斯特·普安;
puan=okuDiziyeKoy(“C:\\deneme\\HW.txt”);
System.out.format(“%d kayıt okundu.%n”,puan.size());
对于(int j=0;j\\\\]\[\\\\\\\\\*\{]+”,“”);
字符串b=a.replaceAll(“[\\.]+”,“,”);
扫描仪=新扫描仪(b);
while(scanner.hasNext()){
if(scanner.hasNextDouble()){
Double doubleValue=scanner.nextDouble();
列表编号=新的ArrayList();
数字。添加(双值);
//System.out.println(Arrays.deepToString(numbers.toArray());
最终整数=6;
final int rows=numbers.size()%col==0?numbers.size()/col:numbers.size()/col+1;
double[]deneme=新的双[行][col];
对于(int i=0;i=numbers.size()%col)
打破
deneme[i][k]=数字。get(k+col*i);
系统输出打印(deneme[i][k]+“”);
}//对于k端
System.out.println();//转到下一行
}//因为我结束了
}//如果扫描结束
否则{
//如果是字符串,则在此处输入值
String stringValue=scanner.next();
}//如果扫描结束
}//当结束时
}//对于字符串s
}//为了结束
}//主端

在内部循环(
k
loop)之后引入一个换行符,使用
System.out.println()

for(int i=0;i
在内部循环(
k
loop)之后引入一个换行符,使用
System.out.println()

for(int i=0;i
当您将元素还原到
deneme
时,所有元素都将被放入
deneme[0]
,因为
k
是从
0
numbers.size()-1
。您可以按如下方式进行修复:

final int col = 6;
final int rows = numbers.size() % col == 0 ? numbers.size() / col : numbers.size() / col + 1;
double[][] deneme = new double[rows][col];
for (int i = 0; i < rows; i++) {
    for (int k = 0; k < col; k++) {
        if (i == rows - 1 && k >= numbers.size() % col) // UPDATE: last line may not contain `col` sized elements
            break;
        deneme[i][k] = numbers.get(k + col * i);       
        System.out.print( deneme[i][k]+ " ");
    }// for k end
    System.out.println(); // go to next line
} // for i end
final int col=6;
final int rows=numbers.size()%col==0?numbers.size()/col:numbers.size()/col+1;
double[]deneme=新的双[行][col];
对于(int i=0;i=numbers.size()%col)//更新:最后一行不能包含'col'大小的元素
打破
deneme[i][k]=数字。get(k+col*i);
系统输出打印(deneme[i][k]+“”);
}//对于k端
System.out.println();//转到下一行
}//因为我结束了

当您将元素还原到
deneme
时,所有元素都将被放入
deneme[0]
,因为
k
是从
0
numbers.size()-1
。您可以按如下方式进行修复:

final int col = 6;
final int rows = numbers.size() % col == 0 ? numbers.size() / col : numbers.size() / col + 1;
double[][] deneme = new double[rows][col];
for (int i = 0; i < rows; i++) {
    for (int k = 0; k < col; k++) {
        if (i == rows - 1 && k >= numbers.size() % col) // UPDATE: last line may not contain `col` sized elements
            break;
        deneme[i][k] = numbers.get(k + col * i);       
        System.out.print( deneme[i][k]+ " ");
    }// for k end
    System.out.println(); // go to next line
} // for i end
final int col=6;
final int rows=numbers.size()%col==0?numbers.size()/col:numbers.size()/col+1;
double[]deneme=新的双[行][col];
对于(int i=0;i=numbers.size()%col)//更新:最后一行不能包含'col'大小的元素
打破
deneme[i][k]=数字。get(k+col*i);
系统输出打印(deneme[i][k]+“”);
}//对于k端
System.out.println();//转到下一行
}//因为我结束了

ı将我的程序输出的代码一个接一个地放在另一个数字下面。但是我想把这段代码放到我的程序中,把它的输出一个接一个地放在另一个数字下面。但ı想在线程“main”java.lang.IndexOutOfBoundsException:索引:1,行deneme[i][k]=numbers.get(k+col*i)处的大小:1;对不起,我现在修好了!发生这种情况是因为最后一行中没有
col
大小的元素。如果是string,则原因是else,如果是string,则转到else部分。。如果字符串部分不应该删除,我想是因为别的原因。对不起,我听不懂你的话。对不起,我的英语不好:(但试着说。如果你看我的代码,还有其他if语句。如果文本值是string,则提取double和string,然后进入string statemnt,所以在string值之后,可以出现double值。更新我的代码,知道吗,请再试一次。这样你仍然可以逐行看到它。在线程“main”中接受异常)java.lang.IndexOutOfBoundsException:索引:1,第deneme[i][k]=行的大小:1。get(k+col*i);抱歉,我现在修复了它!发生这种情况是因为最后一行中没有
col
大小的元素。原因是如果它是字符串,那么它就有else,如果有字符串,它就转到else部分。ı