【发布时间】:2014-09-26 21:41:20
【问题描述】:
我正在尝试创建一个程序,该程序读取 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 是出现奇怪输出的地方;任何帮助将不胜感激
【问题讨论】:
-
你得到什么样的“奇怪输出”?
-
定义“奇怪的输出”
-
打印前需要判断这个数是否为素数。现在,您检查的每个数字都将打印 N-2 次,其中 N 是数组中的值。当确定“不是素数”时,调整你的第二个 for 循环停止,然后只打印一次。
-
这里是使用 eclipse luna 的输出:你想知道什么? (1) 偶数/奇数 (2) 素数 (3) 符号 2 5 是素数 5 是素数 5 是素数 7 是素数 7 是素数 7 是素数 7 是素数 7 是素数 9 是素数 9 不是素数
标签: java for-loop switch-statement