【问题标题】:Switch case that dosent continue in a while loop [closed]在while循环中继续的切换案例[关闭]
【发布时间】:2021-09-12 14:55:14
【问题描述】:
  int selection;  
  selection = 0;

  
  while (selection != -1)
  {
     selection = menu();

     switch (selection)
     {
     case 1:
        System.out.println("Hur många varor vill du lägga till?");
        int numberOfArticles = input();
        System.out.print("Du har lagt till:  " + numberOfArticles + " varor\n");
        articles = checkFull(articles, numberOfArticles);
        articleNumber = insertArticles(articles, articleNumber, numberOfArticles);
        break;
     case 2:
        System.out.println("Vilken artikel vill du ta bort?");
        removeArticle(articles);
        break;
     case 3:
        System.out.println("Visa artiklar");
        printArticles(articles);
        break;
     case 4:
        System.out.println("Vilken artikel vill du sälja? Hur stort antal vill du sälja?");
        sellArticle(sales, salesDate, articles);
        break;
     case 5:
        System.out.println("Orderhistorik");
        printSales(sales, salesDate);
        break;
     case 6:
        System.out.println("Avsluta");
        System.exit(0);
        break;
     default:
        System.out.print("Felaktig inmatning!\n");
        break;

当用户给出一个字符串值然后程序说错误的值然后程序就停止了。但是当我选择像 22 之类的数字时,程序会显示错误的值,然后循环继续并给用户另一个尝试的机会。但是当涉及到一个字符串输入时,它就会停止并且不给用户另一个机会。

【问题讨论】:

  • 你能提供样本输入吗?请至少给出 2 个输入/输出示例。
  • 请问menu() method的定义好吗

标签: java switch-statement


【解决方案1】:

结束循环selection 应该等于-1。我认为像下面这样更改default 案例将解决问题。

default:
        System.out.print("Felaktig inmatning!\n");
        selection = -1;
        break;

然后当用户输入不正确的值时它会退出循环。

【讨论】:

  • 正确的退出循环方式也可以使用break标签,但是O/P试图将String赋值为整数,这是不可能的,可能是o/p正在赋值一个字符。
【解决方案2】:
public static int input()
   {

      int input;

      input = 0;

      while (input == 0)
      {
         if (keyboard.hasNextInt())
         {
            input = keyboard.nextInt();
            break;
         } else
         {
            input = -1;
            break;

         }

      }

      return input;
   }

【讨论】:

  • 这是用户交互输入的方法,我想问题可能出在这里
  • 我现在已经解决了,谢谢大家帮助我。
  • 这似乎是您问题的一部分,请通过编辑按钮将此部分添加到您的问题中
猜你喜欢
  • 1970-01-01
  • 2023-01-22
  • 2014-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-11
  • 2020-06-09
  • 2015-07-26
相关资源
最近更新 更多