在while循环中使用switch语句

时间:2015-08-14 20:59:42

标签: java while-loop switch-statement

我正在尝试在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

当我输入金额时,我想选择另一个选项 - 输出应该根据所选的选项(你可能应该知道我希望这个代码做什么)。有人可以帮忙纠正代码吗?

由于

3 个答案:

答案 0 :(得分:2)

您目前获取并设置选择值一次且在while循环之前,因此无法在循环内更改此选项。解决方案:从while循环的Scanner对象里面获取下一个选择值。要理解这一点,请从逻辑上思考问题,并确保在思想和书面上仔细阅读代码,因为问题不是编程问题,而是基本的逻辑问题。

关于:

  

有人可以帮忙更正代码吗?

请不要让我们这样做,原因有几个。

  1. 这不是家庭作业完成服务
  2. 当你学习如何通过编写代码来学习代码时,你会通过要求别人为你改变代码来伤害自己。
  3. 真的,这是一个基本的简单问题,你有能力自己修复。请试一试,只有当尝试不起作用时,请告诉我们您的尝试。

答案 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)