这是简单的代码,但我无法弄清楚为什么它接受两行输入:
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没有消耗任何输入.
我必须犯一个简单的错误,但不能弄清楚出了什么问题.如果有人能够指出我做错了什么,那将非常感激.
每个循环都会始终打印此行.
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)
而已