2015-11-09 53 views
0

我尝试过在网上到处搜索,而我不能。基本上我想制定一个计划,让你有选择想要什么饮料的选择,然后当你输入饮料时,它会告诉它有多少。我使用了一个while循环,所以如果您输入错误的价格,它会一直询问合适的价格,直到您选择它。它适用于我的第一杯饮料“百事可乐”,但当我选择可乐时,代码根本没有运行......它甚至不问价格。while循环与两个if语句不起作用

import java.util.Scanner; 
public class BendingMachineTestWhile{ 



public static void main (String [] args) 
    { 
    String drink; 
    int money; 
    Scanner kbd = new Scanner (System.in); 

System.out.println (" Pick from the following drinks: \n pepsi \n coke \n gatorade"); 
drink = kbd.nextLine(); 
while (true){  
    if (drink.equals ("pepsi")) 
    { 
    System.out.println ("That will be 4 dollars"); 
    System.out.println ("Enter 4 dollars"); 
    money = kbd.nextInt(); 
    if (money == 4) 
    { 
     System.out.println ("Thanks."); 
     break; 
    } 
    else if (money != 4) 
    { 
     System.out.println ("You idiot its four dollars"); 
    } 

    } 
} 

if (drink.equals ("coke")) 
{ 
    System.out.println ("That will be 6 dollars"); 
    System.out.println ("Enter 6 dollars"); 
    money = kbd.nextInt(); 
    while (true){ 
    if (money == 6) 
    { 
     System.out.println ("Thanks."); 
     break; 
    } 
    else if (money != 6) 
    { 
     System.out.println ("You idiot its four dollars"); 
    } 
    } 

} 
} 
} 

第二个if语句是不起作用的。如果你们能帮助我,我会非常感激。

+2

是因为你的焦炭是否超出循环范围。在while循环中移动 – Makoton

回答

1

的问题是,您对coke选择代码是while循环之外。因此,它从不执行甚至检查循环执行中的可乐。

我格式化你的代码更容易读一位。 :)

顺便问一下,您对“焦”状态码比你百事可乐条件不同。我会改变他们基本相同,因为他们应该执行相同的基本操作。

你的循环改成这样:

while (true){  
    if (drink.equals ("pepsi")) 
    { 
     System.out.println ("That will be 4 dollars"); 
     System.out.println ("Enter 4 dollars"); 
     money = kbd.nextInt(); 
     if (money == 4) 
     { 
      System.out.println ("Thanks."); 
      break; 
     } 
     else 
     { 
      System.out.println ("You idiot it's four dollars"); 
     } 
    } 
    else if (drink.equals ("coke")) 
    { 
     System.out.println ("That will be 6 dollars"); 
     System.out.println ("Enter 6 dollars"); 
     money = kbd.nextInt(); 
     if (money == 6) 
     { 
      System.out.println ("Thanks."); 
      break; 
     } 
     else 
     { 
      System.out.println ("You idiot it's four dollars"); 
     } 

    } 
    else { 
     System.out.println("You didn't make a valid choice, please choose coke or pepsi"); 
    } 

    // Get another input to continue program, here. 
} 

你真的应该考虑命名变量的东西描述自己的目的。例如,您的Scanner应该被命名为:input。这使得它非常清楚它的作用,然后暗示如何基于它的对象来使用它。

+1

非常感谢,我将更改我的扫描仪和其他东西的变量名称。谢谢 –

+0

@ Pedro.A非常欢迎!在您的编程之旅中祝您好运 –

0

尝试把它里面你,而(真)语句。

而且随着越来越多的现实情况下,您可以使价格和名称的数组,但那是另一个问题完全

0

我认为它将对你有好处。

import java.util.Scanner; 

public class BendingMachineTestWhile { 

public static void main(String[] args) { 
    String drink; 
    int money; 
    Scanner kbd = new Scanner(System.in); 

    System.out.println(" Pick from the following drinks: \n pepsi \n coke \n gatorade"); 
    drink = kbd.nextLine(); 
    while (true) { 
     if (drink.equals("pepsi")) { 
      System.out.println("That will be 4 dollars"); 
      System.out.println("Enter 4 dollars"); 
      money = kbd.nextInt(); 
      if (money == 4) { 
       System.out.println("Thanks."); 
       break; 
      } else if (money != 4) { 
       System.out.println("You idiot its four dollars"); 
      } 

     } else if (drink.equals("coke")) { 
      System.out.println("That will be 6 dollars"); 
      System.out.println("Enter 6 dollars"); 
      money = kbd.nextInt(); 
      if (money == 6) { 
       System.out.println("Thanks."); 
       break; 
      } else if (money != 6) { 
       System.out.println("You idiot its four dollars"); 
      } 
     } else { 
      if (drink.equals("gatorade")) { 
       System.out.println("That will be 8 dollars"); 
       System.out.println("Enter 8 dollars"); 
       money = kbd.nextInt(); 
       if (money == 8) { 
        System.out.println("Thanks."); 
        break; 
       } else if (money != 8) { 
        System.out.println("You idiot its four dollars"); 
       } 
      } else { 
       System.out.println("Your entered drink is not available here so please enter from the list again"); 
       System.out.println(drink = kbd.nextLine()); 
      } 
     } 

    } 
} 
}