我想創建一個程序,讀取10個整數的列表,並詢問用戶他們是否想知道輸入的整數是偶/奇,素數,或他們的標誌。 我沒有看到那裏的錯誤是:素數切換在一個Java程序有意想不到的輸出
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是這裏的怪輸出發生;任何幫助將不勝感激
什麼樣的「怪輸出」的你好嗎? – APerson 2014-09-26 21:43:03
定義「奇怪的輸出」 – Swayam 2014-09-26 21:43:42
您需要在打印之前確定數字是否爲素數。現在您檢查的每個數字都會打印N-2次,其中N是數組中的值。確定「不是素數」時,調整第二個for循環停止,然後僅打印一次。 – Ross 2014-09-26 21:47:04