Java中的控制台输入

ash*_*ash 1 java

这是简单的代码,但我无法弄清楚为什么它接受两行输入:

import java.io.*;
import java.util.*;

public class Solution {

public static void main(String[] args) {
    Scanner scan = new Scanner (System.in);
    String inputString = scan.nextLine();
    int n = Integer.parseInt (inputString);
    for (int i = 1; i <= n; ++i) {
        inputString = scan.nextLine();
        int num = Integer.parseInt (inputString);
        System.out.println ("Checking prime of: " + num);

        for (int j = 2; j*j < num; ++j) {
            if (num % j == 0) {
                System.out.println ("Not prime");
                break;
            }
        }
        System.out.println ("Prime");
    }
}
}
Run Code Online (Sandbox Code Playgroud)

现在,当我使用以下输入运行时:

3
12
5
7
Run Code Online (Sandbox Code Playgroud)

该程序打印以下内容:

Checking prime of: 12
Not prime
Prime
Checking prime of: 5
Prime
Checking prime of: 7
Prime
Run Code Online (Sandbox Code Playgroud)

注意上面的第二个Prime没有消耗任何输入.

我必须犯一个简单的错误,但不能弄清楚出了什么问题.如果有人能够指出我做错了什么,那将非常感激.

Fra*_*ool 6

每个循环都会始终打印此行.

System.out.println ("Prime");
Run Code Online (Sandbox Code Playgroud)

for第一个循环中添加一个标志变量

boolean isPrime = true;
Run Code Online (Sandbox Code Playgroud)

在你的内心if:

if (num % j == 0) {
    isPrime = false;
    break;
}
Run Code Online (Sandbox Code Playgroud)

然后有另一个条件

if (isPrime) {
    System.out.println ("Prime");
} else {
    System.out.println ("Not prime");
}
Run Code Online (Sandbox Code Playgroud)

而已