我正在尝试创建一个程序,该程序读取 10 个整数的列表,并询问用户是否想知道输入的整数是偶数/奇数、素数或其符号。 我不明白错误在哪里:
import java.io.*;
public class Menu1 {
public static void main(String args[])throws IOException{
BufferedReader b=new BufferedReader(new InputStreamReader(System.in));
int array[]=new int[10];
int a=0, i=0;
System.out.println("Welcome, please enter 10 integers:");
try{
for(i=0;i<10;i++){
System.out.println("Enter integer "+(i+1)+":");
array[i]=Integer.parseInt(b.readLine());
}
}catch(NumberFormatException e){
System.err.println("Not an integer! "+e.getMessage());
}
System.out.println("What would you like to know?\n(1) Even/Odd\n(2) Primes\n(3) Sign");
try{
a=Integer.parseInt(b.readLine());
}catch(NumberFormatException e){
System.err.println("Not an integer! "+e.getMessage());
}
switch (a){
case 1:
for(i=0;i<10;i++){
if(array[i]%2==0)
System.out.println(array[i]+" is even");
else
System.out.println(array[i]+" is odd");
}
break;
case 2:
for(int j=0;j<10;j++){
for(i=2;i<array[j];i++){
if(array[j]%i==0)
System.out.println(array[j]+" isn't prime");
else
System.out.println(array[j]+" is prime");
}
}
break;
case 3:
for(i=0;i<10;i++){
if(array[i]>0)
System.out.println(array[i]+" is positive");
else if(array[i]<0)
System.out.println(array[i]+" is negative");
else
System.out.println(array[i]+" has no sign");
}
break;
default:
System.out.println("Invalid Option");
}
}
}
情况 1 和情况 3 工作得很好,情况 2 是出现奇怪输出的地方;任何帮助将不胜感激
最佳答案
在案例 2 的代码中:
case 2:
for(int j=0;j<10;j++){
for(i=2;i<array[j];i++){
if(array[j]%i==0)
System.out.println(array[j]+" isn't prime");
else
System.out.println(array[j]+" is prime");
}
}
break;
您已经放置了一个 System.out.println()
语句,它将在 for 循环的每次迭代中执行。因此,如果数组中的给定元素 array
为 5,您的代码将打印出您的数字是否可以被 2 到 5 之间的每个数字整除。这可能不是您想要的.
要解决此问题,有几个选项:首先,您可以在发现数字不是质数时设置一个 boolean 标志,然后检查它并在内部 for 循环后打印结果:
case 2:
for(int j=0;j<10;j++){
boolean isPrime = true; // assume it's prime
for(i=2;i<array[j];i++){
if(array[j]%i==0)
isPrime = false;
break; // get out of the inner for loop early
}
if(isPrime)
System.out.println(array[j]+" is prime");
else
System.out.println(array[j]+" isn't prime");
}
break;
关于java - java 程序中的素数切换有意外的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26068715/