Java - 错误的输入保存并打印到二维字符数组中

时间:2018-05-20 09:31:19

标签: java arrays

问题:打印阵列时输出错误。通过文件读取的字符未正确读取。

详情:

我无法正确保存数组中的字符元素,当我执行程序时,当我打印保存从txt文件读取的字符的数组时,输出非常错误且不连贯。 所以在我的程序中,输入是通过命令行,通过txt文件给出的。 txt文件包含一些char元素。文件输入的每一行,无论文件,相同的元素。输入文件中的字符必须保存在二维数组中(当我将txt文件中的元素保存到我的二维数组中时,我忽略了新的行字符)。我知道这个数组的大小。由于涉及输入文件,每行具有相同数量的元素,因此我可以导出行数。 这是我写的代码,但它输出错误。 输入通过文件:

+.........-
-+--------.

输出错误:

++++++++++++++++++++........................................Number of lines: 2
Number of chars: 20
Number of columns: 10

那么请你在我的代码中进行必要的修改来帮助我吗?我是Java中的新手,我无法说明为什么我的代码执行错误。

import java.util.*; 
import java.io.*; 

public class Doomday2 {
public static void main (String args[]) throws FileNotFoundException {
    Scanner scanner = new Scanner(new File(args[0])); 
    scanner.useDelimiter("");
    int numberOfLines = 0, count_chars=0, rows=0, i=0, j=0;
    while(scanner.hasNext()) {
        char c = scanner.next().charAt(0);

        if(c == System.getProperty("line.separator").charAt(0)) {
            numberOfLines++;
            continue;
        }
        else count_chars++;     // do something with char
     }

    rows = count_chars /numberOfLines;
    //scanner.close();
    Scanner scanner2 = new Scanner(new File(args[0])); 
    char[][] a = new char[1000][1000];
    while(scanner2.hasNext()){
        char c = scanner2.next().charAt(0);
        if(c == System.getProperty("line.separator").charAt(0)) {
            continue;
        }
        else {
            for( i=0;i<numberOfLines;i++){
                for (j=0; j< rows; j++){
                 // System.out.print(a[i][j]);
                 a[i][j]=c; 
                 System.out.print(a[i][j]);
                }
            }
        }
    }
    //for(int i=0;i<counter;i++)
   // {
     //   System.out.print(a[i]);
   // }

   for( i=0;i<numberOfLines;i++){
      for (j=0; j< rows; j++){
          System.out.print(a[i][j]);

      }
   }
    System.out.println("Number of lines: " + numberOfLines);
    System.out.println("Number of chars: " + count_chars);
    System.out.println("Number of columns: " + rows);
    scanner.close();
    scanner2.close();
}

}

0 个答案:

没有答案