用字符串控制while循环

时间:2015-03-18 12:09:21

标签: string loops while-loop

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

真正的问题是我的do while循环总是无穷无尽的我不知道如何用String停止循环。这是我的第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") );

}

2 个答案:

答案 0 :(得分: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个选项然后退出循环(尽管我没有测试过这个代码)。

答案 1 :(得分:0)

我建议使用布尔值。

这样您只需要检查true或false,或1/0。

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

在循环内的某个点将变量设置为false或true后,一切都会正常;)

我希望这会有所帮助