Java for循环被卡住,没有将最后一个int写入文件

问题描述 投票:-1回答:2

我正在尝试从输入中读取整数并将每3个整数存储在单独的文件中,但是for循环停留在最后一个输入整数处。我尝试使用if语句在循环内关闭文件,但得到的结果相同。输入:

3 85 27 4095 37 6723 5 3528 17 533 94 6278 46 2399 71 90感谢您的帮助

private Scanner inf = new Scanner(System.in); 
int m = inf.nextInt();

private int gen_files() throws IOException {
    int j = 1;
    while(inf.hasNext()){
        String filename = "File0" + j + ".txt";
        PrintWriter my_writer = new PrintWriter(new File(filename));
        for(int i = 1; i <= m ; i++){ //from 1 to 3
            my_writer.write(inf.nextInt() + " ");
        }
        my_writer.close();
        j++;
    }
    return j-1; //returns the number of files gen
}
java printwriter
2个回答
0
投票

您的for循环从1迭代到m(但not检查是否还有更多int要读取),因此,如果您输入的内容不是该数字的三倍当没有IOException时,将抛出int来“停止”。更改

for(int i = 1; i <= m ; i++){

to

for(int i = 1; i <= m && inf.hasNext(); i++){

for(int i = 1; i <= m && inf.hasNextInt(); i++){

0
投票

下面的代码将起作用

private Scanner inf = new Scanner(System.in); 
int m = inf.nextInt();

private int gen_files() throws IOException {
int j = 1;


do {
    String filename = "File0" + j + ".txt";
    PrintWriter my_writer = new PrintWriter(new File(filename));
    for(int i = 1; i <= m ; i++){ //from 1 to 3
        my_writer.write(inf.nextInt() + " ");
    }
    my_writer.close();
    j++;
}while(inf.hasNext());

return j-1; //returns the number of files gen

}

© www.soinside.com 2019 - 2024. All rights reserved.