我想编写一个显示菜单的程序,并要求用户从两个选项中进行选择 a)找到奇数:程序要求用户输入整数x,然后将奇数整数从x打印到1 b)查找偶数:程序要求用户输入整数x,然后将偶数整数从x打印到2。 - 您的代码应识别无效字符并显示“无效选择!!”信息。 - 程序应显示消息“你想继续吗?每次计算后y或n“。用户将输入“y”继续,否则用户将输入“n”。我写了这样的代码
import java.util.*;
public class choices{
//main method
public static void main(String args[]){
Scanner input=new Scanner(System.in);
String op;
int num;
String op2;
String odd="";
String even="";
int count=0;
do{
System.out.println("a) Find odd numbers");
System.out.println("b) Find even numbers");
System.out.print("choose an option [ a, b]: ");
op=input.next();
if (op.equals('a'))
System.out.print("Enter Integer number : ");
num=input.nextInt();
for(int i=num ; i >=num-i ;i--){
if(num%2!=0)
odd=odd+""+i;
System.out.print("odd numbers are : "+odd );
}
if (op.equals('b')){
for(int i=num ; i >=num-i ;i--){
if(num%2==0)
even=even+""+i;
System.out.print("even numbers are : "+even );
}
}
else
System.out.println("invalid choice");
System.out.print("Do you want to continue (y or n)?");
op2=input.next();
if(op2.equals('n'))
System.out.println("Bye");
}
while(!op2.equals('n'));
count++;
}
}
但问题是:它在>之后停止选择一个选项[a,b]:b
a) Find odd numbers
b) Find even numbers
choose an option [ a, b]: b
d
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at choices.main(choices.java:30)
答案 0 :(得分:2)
System.out.print("choose an option [ a, b]: ");
op=input.next();
if (op.equals('a'))
System.out.print("Enter Integer number : ");
num=input.nextInt();
注意你的范围。这可能是错的。你每次都在调用nextInt()。
答案 1 :(得分:0)
你有几个问题。
首先,您需要将大括号中的if语句的代码包装起来。这就是我想你想要的:
if (op.equals('a'))
{
System.out.print("Enter Integer number : ");
num=input.nextInt();
for(int i=num ; i >=num-i ;i--)
{
if(num%2!=0)
odd=odd+""+i;
System.out.print("odd numbers are : "+odd );
}
}
其次,'a'
是一个字符,所以你的if条件永远不会通过。你需要做op.equals("a")
。问题是它正在跳过你的第二个提示,因为if语句失败了,无论出于什么原因你都为"d"
提供了input.nextInt()
,并且你得到了一个类型错误。
答案 2 :(得分:0)
此行之后的op=input.next();
(可以是a或b)接下来是num=input.nextInt();
,您不能选择d
,因为它不是Int。试着捕捉异常:
boolean stopFlag = false;
do {
...
System.out.print("choose an option [ a, b]: ");
op=input.next();
if (op.equals('a')) { // i think `{` must be here
System.out.print("Enter Integer number : ");
try {
num=input.nextInt();
} catch (InputMismatchException ex) {
// this wasn't an int
System.out.println("You entered not a correct number.");
System.out.println("Bye");
stopFlag = true;
}
///
for(int i=num ; i >=num-i ;i--){
if(num%2!=0)
odd=odd+""+i;
System.out.print("odd numbers are : "+odd );
}
} // and `}` here
...
// make the same with `b`
...
while(!stopFlag);