2017-04-04 11 views
1

ピザのトッピングの1つがと同じ初期文字を持つ問題があります。 ユーザーが最初の文字の後に"m"と入力すると、"m"がmozarellaとして認識され、もう一度認識されないようにするにはどうすればよいですか。Java:2つの入力の最初の文字が同じ

現在、mmと入力した場合、Your order is: Medium pizza with, Medium pizza with, £8.0が印刷されますが、Your order is: Medium pizza with,mozarella,£5.0と印刷します。

public class pizza { 
    public static void main(String[] args){ 
     pizzaServiceA(); 
    } 
    public static void pizzaServiceA(){ 
     Scanner input = new Scanner(System.in); 
     double total = 0; 
     System.out.println("Enter order:"); 
     String order = input.next(); 
     String pizza = "Your order is: "; 

     if (order.equals("quit")){ 
      System.out.println("Program exiting."); 
      System.exit(0); 
     } 

     boolean size = false; 
     for (int x = 0; x < order.length(); x++){ 
     if (order.charAt(0) == 'm' || order.charAt(0) == 'l'){ 
      if (order.charAt(x) == 'm'){ 
       total +=4.00; 
       pizza += "Medium pizza with,"; 
       size = true; 
      } 
      else if (order.charAt(x) == 'l'){ 
       total +=5.00; 
       pizza +="Large pizza with,"; 
      } 
      else if (order.charAt(x) == 'h'){ 
       pizza +="ham,"; 
       if (size) total += 1.40; 
       else total +=2.10; 
      } 
      else if (order.charAt(x)== 'o'){ 
       pizza +="olives,"; 
       if(size) total +=0.80; 
       else total +=1.20; 
      } 
      else if (order.charAt(x)=='p'){ 
       pizza+="pineapple,"; 
       if(size) total +=1.00; 
       else total+=1.50; 
      } 
      else if (order.charAt(x)=='s'){ 
       pizza+="spinach,"; 
       if(size) total +=0.80; 
       else total+=1.20; 
      } 
      else if (order.charAt(x)=='m'){ 
       pizza +="mozarella,"; 
       if(size) total =(long) + 1.00; 
       else total+=1.50; 
      } 
     } 
     else { 
      System.out.println("Your first character must be m(medium) or l(large)"); 
     } 
     } 
     System.out.println(pizza +"£" + String.format("%.2f", total)); 
    } 
} 

このプログラムに別の方法を使用する必要がある場合は、誰かが使用する必要があるものと使用方法を説明できますか?私はJavaの初心者ですので、まだ学習しており、どんな助けもありがとうございます。

+0

'pizza'が既に' Medium'を文字列に含んでいるかどうかをチェックします。 – tnw

+0

'if'ネストを分割することができます。あなたが最初の文字をサイズとして処理し、その後に文字をトッピングとして扱うようにします。 –

+0

@EricRobinsonどうすればいいですか?今のところ私がやっている方法はブーリアンサイズであり、その真の場合はメディアの合計に加算され、真でない場合は大きなものが加算されるからです。 –

答えて

0

まず、メディアのコードをmからmdに変更するのは簡単です。しかし、サイズが追加されているかどうかを確認することができます(ユーザーがすでにmまたはlを追加しているので)、それが真であれば、もう一方のmはモッツァレラになります。あなたが最初の文字を読んだことがある場合、mはモッツァレラチーズとなります

counter>0

ので、もしあなたは、カウントするために、あなたのコード内でカウンタを追加することによってそれを行うことができます。このような 何かは大文字と小文字の区別をしてみ

public class pizza { 
public static void main(String[] args){ 
    pizzaServiceA(); 
} 
public static void pizzaServiceA(){ 
    Scanner input = new Scanner(System.in); 
    double total = 0; 
    System.out.println("Enter order:"); 
    String order = input.next(); 
    String pizza = "Your order is: "; 

    if (order.equals("quit")){ 
     System.out.println("Program exiting."); 
     System.exit(0); 
    } 

    int count=0; 
    boolean size = false; 
    for (int x = 0; x < order.length(); x++){ 
    if (order.charAt(0) == 'm' || order.charAt(0) == 'l'){ 
     if (order.charAt(x) == 'm' && count ==0){ 
      total +=4.00; 
      pizza += "Medium pizza with,"; 
      size = true; 
     } 
     else if (order.charAt(x) == 'm' && count > 0){ 
      pizza +="mozarella,"; 
      if(size) total =(long) + 1.00; 
      else total+=1.50; 
     } 
     else if (order.charAt(x) == 'l'){ 
      total +=5.00; 
      pizza +="Large pizza with,"; 
     } 
     else if (order.charAt(x) == 'h'){ 
      pizza +="ham,"; 
      if (size) total += 1.40; 
      else total +=2.10; 
     } 
     else if (order.charAt(x)== 'o'){ 
      pizza +="olives,"; 
      if(size) total +=0.80; 
      else total +=1.20; 
     } 
     else if (order.charAt(x)=='p'){ 
      pizza+="pineapple,"; 
      if(size) total +=1.00; 
      else total+=1.50; 
     } 
     else if (order.charAt(x)=='s'){ 
      pizza+="spinach,"; 
      if(size) total +=0.80; 
      else total+=1.20; 
     } 

    } 
    else { 
     System.out.println("Your first character must be m(medium) or l(large)"); 
    } 
    count++; 
} 
    System.out.println(pizza +"£" + String.format("%.2f", total)); 
} 

}

0

OKである必要があります。モザレラが「m」か「M」かを覚えておいてもかまいません(mediumを「m」に、mozzarellaを「M」に、またはその逆に変更することを選択した場合のみ) "同じ原理が"medium"にも適用されます。 @geoが示唆しているように、 "md"のようなものに変更することもできます。

+1

ええ、私はそれを考えましたが、具体的には "m"であること、 "mo"は "m"でなければならないということです。 –

+0

ええ、私が言ったように、 –

関連する問題