我是java新手,想请教一下。我有一些数据存储在一个 txt 文件中,每行包含三个整数,以空格分隔。如果满足某些条件(在我的情况下 - 第三个 int 大于 50),我想从文件中读取数据,然后将这些数据放入数组中以进行进一步处理。我读了一些关于如何读取文件中的行数或文件本身的问题,但我似乎无法将它们结合在一起以使其工作。最新版本的代码如下所示:
public class readfile {
private Scanner x;
public void openFile(){
try{
x = new Scanner(new File("file.txt"));
}
catch (Exception e){
System.out.println("could not find file");
}
}
public void readFile() throws IOException{
LineNumberReader lnr = new LineNumberReader(new FileReader(new File("file.txt")));
int i = lnr.getLineNumber();
int[] table1 = new int[i];
int[] table2 = new int[i];
while(x.hasNextInt()){
int a = x.nextInt();
int b = x.nextInt();
int c = x.nextInt();
for (int j=0; j< table1.length; j++)
{
if(c > 50)
{
table1[j]=a;
table2[j]=b;
}
}
}System.out.printf(" %d %d", table1, table2);
}
public void closeFile(){
x.close();
}
}
main 位于另一个文件中。
public static void main(String[] args) {
readfile r = new readfile();
r.openFile();
try {
r.readFile();
}
catch (Exception IOException) {} //had to use this block or it wouldn't compile
r.closeFile();
}
当我在 printf 方法上使用 %d 时,我什么也看不到,当我使用 %s 时,我会在输出中得到一些乱码,例如
[I@1c3cb1e1 [I@54c23942
我应该怎么做才能使它工作(即当c> 50时打印成对的ab)?
提前感谢您的帮助,如果这是一个明显的问题,我很抱歉,但我真的没有关于如何改进它的想法:)