我正在尝试在Java中使用while循环中的switch语句,但是出现了问题。请看下面的示例代码,它解释了我的问题:
Scanner input=new Scanner(System.in);
int selection = input.nextInt();
while (selection<4)
{ switch(selection){
case 1:
System.out.println("Please enter amount");
double amount=input.nextDouble(); //object of scanner class
break;
case 2:
System.out.println("Enter ID number");
break;
case 3:
System.out.println("Enter amount to be credited");
break;
}
System.out.println("1. Transfer\n2.Check balance\n3.Recharge");
}
如果我运行此代码,输出如下:
1
Please enter amount
2000
1. Transfer
2.Check balance
3.Recharge
Please enter amount
2
1. Transfer
2.Check balance
3.Recharge
Please enter amount
当我输入金额时,我想选择另一个选项 - 输出应该根据所选的选项(你可能应该知道我希望这个代码做什么)。有人可以帮忙纠正代码吗?
由于
答案 0 :(得分:2)
您目前获取并设置选择值一次且在while循环之前,因此无法在循环内更改此选项。解决方案:从while循环的Scanner对象里面获取下一个选择值。要理解这一点,请从逻辑上思考问题,并确保在思想和书面上仔细阅读代码,因为问题不是编程问题,而是基本的逻辑问题。
关于:
有人可以帮忙更正代码吗?
请不要让我们这样做,原因有几个。
答案 1 :(得分:1)
你忘了再次要求选择。一旦进入,它就不会改变。
Scanner input=new Scanner(System.in);
int selection = input.nextInt();
while (selection<4)
{
switch(selection){
case 1:
System.out.println("Please enter amount");
double amount=input.nextDouble(); //object of scanner class
break;
case 2:
System.out.println("Enter ID number");
break;
case 3:
System.out.println("Enter amount to be credited");
break;
}
System.out.println("1. Transfer\n2.Check balance\n3.Recharge");
selection = input.nextInt(); // add this
}
你甚至可以使用do ... while循环来避免写input.nextInt();
两次
Scanner input=new Scanner(System.in);
int selection;
do
{
selection = input.nextInt();
switch(selection){
case 1:
System.out.println("Please enter amount");
double amount=input.nextDouble(); //object of scanner class
break;
case 2:
System.out.println("Enter ID number");
break;
case 3:
System.out.println("Enter amount to be credited");
break;
}
System.out.println("1. Transfer\n2.Check balance\n3.Recharge");
}
while(selection < 4);
答案 2 :(得分:-1)
大小写必须大于4,在你的情况下,大小小于4.所以你不会退出循环,基本上break语句打破了开关并跳转到循环,但是循环再次少了超过4,所以它再次跳入开关,依此类推。修复你的案件的大小,也许只是做一个
(selection != 1 || selection != 2 || selection !=3 || selection !=4)