Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 文件中的For循环_Java - Fatal编程技术网

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文件的外观如何,以及哪个版本适用于代码