我正在尝试从输入中读取整数并将每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
}
您的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++){
下面的代码将起作用
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
}