问题:打印阵列时输出错误。通过文件读取的字符未正确读取。
详情:
我无法正确保存数组中的字符元素,当我执行程序时,当我打印保存从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();
}
}