Java 文件中的For循环
我试着从一个文件中得到数字来打印出来,并把它们加在一起,打印出总数。我只能让其中一个工作,但不能同时让两个都工作。以下是我目前掌握的情况:Java 文件中的For循环,java,Java,我试着从一个文件中得到数字来打印出来,并把它们加在一起,打印出总数。我只能让其中一个工作,但不能同时让两个都工作。以下是我目前掌握的情况: import java.util.Scanner; public class ReadFromFile{ public static void main(String[] args)throws IOException{ File fp = new File("Java_Output.txt"); Scanner fs
import java.util.Scanner;
public class ReadFromFile{
public static void main(String[] args)throws IOException{
File fp = new File("Java_Output.txt");
Scanner fs = new Scanner(fp);
int sum = 0;
while(fs.hasNext()){
System.out.println(fs.nextLine());
sum += fs.nextInt();
}
fs.close();
System.out.println(sum);
}
}
当您调用
fs.nextLine()
时,您将使用整行,然后将下一行的int
添加到总和中。根据你的问题,你想要
while(fs.hasNextInt()){
int v = fs.nextInt();
System.out.println(v);
sum += v;
}
注意:如果Java\u Output.txt
的内容如下,请在调用nextInt()
之前调用hasNextInt()
:
10 20 30 40 50
10
20
30
40
50
以下代码适用于您:
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class ReadFromFile {
public static void main(String[] args) throws IOException {
File fp = new File("Java_Output.txt");
Scanner fs = new Scanner(fp);
int sum = 0;
while (fs.hasNextInt()) {
int nextInt = fs.nextInt();
sum += nextInt;
System.out.println(nextInt);
}
fs.close();
System.out.println(sum);
}
}
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class ReadFromFile {
public static void main(String[] args) throws IOException {
File fp = new File("Java_Output.txt");
Scanner fs = new Scanner(fp);
int sum = 0;
while (fs.hasNext()) {
int nextInt = Integer.parseInt(fs.nextLine());
sum += nextInt;
System.out.println(nextInt);
}
fs.close();
System.out.println(sum);
}
}
如果Java_Output.txt
的内容如下:
10 20 30 40 50
10
20
30
40
50
除上述代码外,以下代码也适用于您:
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class ReadFromFile {
public static void main(String[] args) throws IOException {
File fp = new File("Java_Output.txt");
Scanner fs = new Scanner(fp);
int sum = 0;
while (fs.hasNextInt()) {
int nextInt = fs.nextInt();
sum += nextInt;
System.out.println(nextInt);
}
fs.close();
System.out.println(sum);
}
}
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class ReadFromFile {
public static void main(String[] args) throws IOException {
File fp = new File("Java_Output.txt");
Scanner fs = new Scanner(fp);
int sum = 0;
while (fs.hasNext()) {
int nextInt = Integer.parseInt(fs.nextLine());
sum += nextInt;
System.out.println(nextInt);
}
fs.close();
System.out.println(sum);
}
}
请注意,fs.nextLine()
在第一种情况下不起作用,因为它在一次调用中读取整行(即所有整数)。调用fs.nextLine()
时,将扫描仪移到下一行。超过文件的第一行。
如果您的输入文件Java_Output.txt
,格式如下:
10
20
30
40
50
或
此修改版本将适用于:
import java.util.Scanner;
public class ReadFromFile{
public static void main(String[] args)throws IOException{
Scanner fs = new Scanner(new File("Java_Output.txt") );
int sum = 0;
while(fs.hasNext()){
sum += fs.nextInt();
}
fs.close();
System.out.println(sum);
}
}
您有这段代码的示例输入、预期输出和实际输出吗?提示:每次调用nextXxx时,您都会读取下一个Xxx并移动光标。调用nextLine()和nextInt()读取一行,然后读取该行后面的int。变量是你的朋友。“我只能让一个或另一个工作,但不能同时让两个都工作。”这是因为一旦你调用fs.nextLine()
这个数字就会从缓冲区中提取;以下对fs.nextInt()
的调用将读取后面的数字,或者可能没有任何内容可读取。将代码更改为只读取每行/数字一次,将其存储在变量中,并将其用于打印和计算总数。txt文件的外观如何,以及哪个版本适用于代码