【问题标题】:Controling do while loop with string用字符串控制 do while 循环
【发布时间】:2015-05-21 05:08:40
【问题描述】:

大家好,这是我的问题,例如我有 3 篇文章,用户可以选择其中任何一篇或全部。一开始我问一个用户,“你想选择一些文章吗?”如果他输入“是”,我们将开始一个 whiledo while 循环,将所有选定文章的价格相加,并将它们添加到总价值中, 例如文章一的价格是 20,文章 3 的价格是 40,它应该写你选择了文章一和文章三,总价是 60。当用户以他的选择结束时,他输入 no 并且循环结束。

真正的问题是我的do while 循环总是无穷无尽的,我不知道如何用字符串停止循环。这是我的第 10 版代码,我尝试了所有方法,但确实无法解决这个问题。

public static void main(String[] args) {
    Scanner tastatura = new Scanner(System.in);

    System.out.println("Artikal 1\nArtikal 2\nArtikal 3");

    System.out.println("Do you want to chose a new article");
    String choiseString = tastatura.nextLine();

    do {
        System.out.println("Chose article ");
        int choise = tastatura.nextInt();
        switch (choise) {
            case 1:
                System.out.println("Artikal 1 ");
                int price = 10;
                break;
            case 2:
                System.out.println("Artikal 2 ");
               price= 20;
                break;
            case 3:
                System.out.println("Artikal 3");
               price = 30;
                break;
        }

    } while (choiseString.equalsIgnoreCase("yes") );

}

【问题讨论】:

    标签: string loops while-loop


    【解决方案1】:

    我相信你的问题是你从来没有给用户机会改变 choiseString 的值。

    您允许用户在循环开始之前设置值,但一旦进入循环,它就不会改变。

    您的 while 循环可以改为:

    do {
      System.out.println("Do you wish to continue?");
      choiseString = tastatura.nextLine();
    
      System.out.println("Chose article ");
      int choise = tastatura.nextInt();
      //rest of your logic here
    
    } while (choiseString.equalsIgnoreCase("yes") );
    

    在这种情况下,它会再要求 1 个选择,然后退出循环(尽管我还没有测试过这段代码)。

    【讨论】:

      【解决方案2】:

      我建议使用布尔值。

      这样你只需要检查真假,或1/0。

      但重要的部分是在循环内部的某个点,将该变量设置为真或假,因为如果你不这样做,循环将是一个无限循环。

      一旦你在循环内的某个点将变量设置为 false 或 true,一切都会好起来的 ;)

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-31
        • 1970-01-01
        • 2014-04-26
        • 1970-01-01
        • 2014-02-20
        • 1970-01-01
        • 2022-11-28
        • 1970-01-01
        相关资源
        最近更新 更多