2017-02-09 11 views
0

Javaでif else文の助けが必要です。アイテムが0になったら "申し訳ありません、在庫切れ"と言うプログラムが必要です。私は試してみましたが、 "在庫切れです"というメッセージは印刷されませんでした。プログラムは、アイテムが在庫切れであることをユーザに知らせる。ありがとうございました。ただ、この通過するJavaのelse文の場合

import java.util.Scanner; 

public class VendingMachine { 

    public static void main(String[] args) { 

     Scanner in = new Scanner(System.in); 
     int Chips = 5; 
     int Cookies = 4; 
     int Candies = 3; 
     double ChipsPrice = 1.25; 
     double CookiesPrice = 0.85; 
     double CandiesPrice = 0.95; 

     Scanner choice = new Scanner(System.in); 
     Scanner moneyIn = new Scanner(System.in); 

     while (true) { 
      double Change = 0; 
      double Amount = 0; 
      double Money = 0; 

      System.out.println("Welcome to the Vending Machine"); 
      System.out.println("Please insert Money"); 
      Amount = moneyIn.nextDouble(); 

      //Make an if statements, such as if moneyIn equals 5 quarters then Amount = 5*0.25 
      //Ask how many quarters how many nickels how many dimes 

      System.out.println("What snack would you like?"); 
      System.out.println("Potato Chips: $" + ChipsPrice + " " + Chips + " left"); 
      System.out.println("Cookies: $" + CookiesPrice + " " + Cookies + " left"); 
      System.out.println("Candies: $" + CandiesPrice + " " + Candies + " left"); 
      String which = choice.nextLine(); 

      if (which.equals("Potato Chips")) { 
       System.out.println("You selected Potato Chips: $" + ChipsPrice + " " + Chips + " left"); 
       if (Amount < ChipsPrice) { 
        System.out.println("Not enough money inserted"); 

        if (Chips == 0) ; 
        System.out.println("Sorry, out of stock"); 
       } else { 
        Chips = Chips - 1; 
        Change = ChipsPrice - Amount; 
        System.out.println("Please take your chips "); 
        System.out.println("Your change is " + Change); 
       } 
      } else if (which.equals("Cookies")) { 
       System.out.println("You selected Cookies: $" + CookiesPrice + " " + Cookies + " left"); 
       Cookies = Cookies - 1; 

       if (Amount < CookiesPrice) { 
        System.out.println("Not enough money inserted"); 
        if (Cookies == 0) 
         System.out.println("Sorry, out of stock"); 
       } else { 
        Cookies = Cookies - 1; 
        Change = CookiesPrice - Amount; 
        System.out.println("Please take your cookies"); 
        System.out.println("Your change is " + Change); 
       } 
      } else if (which.equals("Candies")) { 
       System.out.println("You selected Candies: $" + CandiesPrice + " " + Candies + " left"); 

       if (Amount < CandiesPrice) { 
        System.out.println("Not enough money inserted"); 
        if (Cookies == 0) 
         System.out.println("Sorry, out of stock"); 
       } else { 
        Candies = Candies - 1; 
        Change = CookiesPrice - Amount; 
        System.out.println("Please take your candies"); 
        System.out.println("Your change is " + Change); 
       } 
      } else { 
       System.out.println("Please select one of the snacks below"); 
      } 
     } 
    } 
} 
+1

'if(Chips == 0);'の最後にあるセミコロンを削除します。そして、インデントに注意してください。 – shmosel

+0

それ以外の場合は、商品ごとに条件が異なる必要があります。常に(Cookies == 0)にすることはできません。 –

+0

if stmtsが間違った場所にあることもある – Gab

答えて

1

、いくつかの所見:

// It might be simpler to use a "switch" statement here 
if (which.equals("Potato Chips")) { 
     System.out.println("You selected Potato Chips: $"+ChipsPrice+" "+Chips+" left"); 
     if (Amount < ChipsPrice){ 
      System.out.println("Not enough money inserted"); 
      // Remove the semicolon - as written this won't do anything 
      // Also, this condition shouldn't be here since you're not vending anyway 
      // Incidentally, many people argue that you should always use curly 
      // brackets, even around one-line "if" statements like this, precisely 
      // to prevent errors like this 
      if (Chips == 0); 
      System.out.println("Sorry, out of stock"); 

     } 
     else { 
      // This can be written as Chips--; 
      Chips = Chips - 1; 
      // Should actually be Amount - ChipsPrice; 
      // If they paid 75 cents for a 25-cent item, the change is 75 - 25 = 50 cents, 
      // NOT 25 - 75 = -50 cents 
      Change = ChipsPrice - Amount; 
      System.out.println("Please take your chips "); 
      System.out.println("Your change is "+ Change); 


     } 
    } 
    else if (which.equals("Cookies")) { 
     System.out.println("You selected Cookies: $"+CookiesPrice+" "+Cookies+" left"); 

     // Cookies-- 
     Cookies = Cookies - 1; 

     if (Amount < CookiesPrice){ 
      System.out.println("Not enough money inserted"); 

      // Should be checked in the "else" statement 
      if (Cookies == 0) 
       System.out.println("Sorry, out of stock"); 
     } 
     else { 
      // Cookies-- 
      Cookies = Cookies - 1; 
      // Amount - CookiesPrice 
      Change = CookiesPrice - Amount; 
      System.out.println("Please take your cookies"); 
      System.out.println("Your change is "+ Change); 

     } 

    } 
    else if (which.equals("Candies")) { 
     System.out.println("You selected Candies: $"+CandiesPrice+" "+Candies+" left"); 

     if (Amount < CandiesPrice){ 
      System.out.println("Not enough money inserted"); 
      // Again, you shouldn't check this here given that you won't vend either way 
      // Also, should be if (Candies == 0), NOT if (Cookies == 0) 
      if (Cookies == 0) 
       System.out.println("Sorry, out of stock"); 
     } 
     else { 
      // Candies--; 
      Candies = Candies - 1; 
      // Should actually be Amount - CandyPrice. You use CookiesPrice instead. 
      Change = CookiesPrice - Amount; 
      System.out.println("Please take your candies"); 
      System.out.println("Your change is "+ Change); 

     } 
    } 
    else { 
     System.out.println("Please select one of the snacks below"); 
    } 

もう一つ:あなたは基本的にはまったく同じこと3回連続してやっています。そのような状況では、問題の振る舞いをメソッドとして(3回別々に入力するのではなく)リファクタリングする方が良いのが普通です。