2012-05-07 9 views
-1

私はこのコードをより効率的にするにはどうしたらよいでしょうか?私が続けると信じられないくらい冗長になるでしょう...あなたがそれをシンプルに保つことができればいいといいですか...。これをより効率的にするにはどうすればよいですか? - JavaのIF文

私はこのコードを使い始めました。入力以降の変数にそれを保存...このような何か(1言うことができます):

while(pizzaCounter < 5) 
     { 

      Scanner pizzaPick = new Scanner(System.in); 
      int Pizzas = pizzaPick.nextInt(); 

      if ((Pizzas >= 0) && (Pizzas <= 1)) { 
      String saveName = pizza[Pizzas]; 

       pizzaCounter++; 

       if(pizzaCounter < 5){ 
        System.out.println("and"); 
       } 

      } 

     } 

私は一種の一緒にこれらの2つのコードをマージしたい、私はどのようには考えています。 (これら二つは、このテキストの上にビットであること、および以下のビット)

while(pizzaCounter < 5) 
     { 

      Scanner pizzaPick = new Scanner(System.in); 
      int Pizzas = pizzaPick.nextInt(); 

      if (Pizzas == 1) 
      { 

       System.out.println("1- standard size pizza? - $" + standardPrice + "\nOr \n2- Large pizza? - $" + largePrice); 

       Scanner pizzaSize = new Scanner(System.in); 
       int Size = pizzaSize.nextInt(); 

       if(Size == 1) 
       { 
        moneyCounter = moneyCounter + standardPrice; 
       } 
       else if(Size == 2) 
       { 
        moneyCounter = moneyCounter + largePrice; 
       } 
       pizzaCounter++; 

       if(pizzaCounter < 5){ 
        System.out.println("and"); 
       } 

冗長性の出番はある...

​​
+1

@Vanaya処理の変更は何ですか、ピザ== 1とピザ== 2のときはあなたのコードに変更がありません – Maddy

+3

次回はいくつかの回答を得るのを助けるために、無関係のコードを削除するようにしてください。私たちの多くは、読んであまりにも多くの場合、質問を無視しています。簡潔にすると、より多くの回答を得るのに役立ちます。 –

+0

ループの各反復でScannerオブジェクトを再初期化するという印象を受けます。この再初期化がなければ、おそらくできます。ピザのためのif/else == 1、そしてピザ== 2もおそらくswitch/caseで置き換えることができます。 – Everyone

答えて

1

私はあなたの条件の権利を理解していれば、これは助けることができます新しい方法をブロックする場合は、

while(pizzaCounter < 5) 
     { 

      Scanner pizzaPick = new Scanner(System.in); 
      int Pizzas = pizzaPick.nextInt(); 

      if ((Pizzas >= 0) && (Pizzas <= 1)) { 
      String saveName = pizza[Pizzas]; 

       pizzaCounter++; 

       if(pizzaCounter < 5){ 
        System.out.println("and"); 
       } 

      } 
      if (Pizzas == 1 || Pizzas == 2) 
      { 

       System.out.println("1- standard size pizza? - $" + standardPrice + "\nOr \n2- Large pizza? - $" + largePrice); 

       Scanner pizzaSize = new Scanner(System.in); 
       int Size = pizzaSize.nextInt(); 

       if(Size == 1) 
       { 
        moneyCounter = moneyCounter + standardPrice; 
       } 
       else if(Size == 2) 
       { 
        moneyCounter = moneyCounter + largePrice; 
       } 
       pizzaCounter++; 

       if(pizzaCounter < 5){ 
        System.out.println("and"); 
       } 


     } 
    } 
1

私はまた、内部のコードを作る、それはあなたの方法への引数に基づいて別の何かに柔軟性を与えるその方法を検討します。あなたは、メソッドの引数と戻り値で遊ぶことができ

while(pizzaCounter < 5) 
    { 

     Scanner pizzaPick = new Scanner(System.in); 
     int Pizzas = pizzaPick.nextInt(); 

     if ((Pizzas >= 0) && (Pizzas <= 1)) { 
     String saveName = pizza[Pizzas]; 

      pizzaCounter++; 

      if(pizzaCounter < 5){ 
       System.out.println("and"); 
      } 

     } 
     if (Pizzas == 1) 
     { 
      handlePizza(); 

      pizzaCounter++; 

      if(pizzaCounter < 5){ 
       System.out.println("and"); 
      } 

     } 
     else if(Pizzas == 2) 
     { 
      handlePizza(); 

      pizzaCounter++; 

      if(pizzaCounter < 5){ 
       System.out.println("and"); 
      } 
     } 
} 

public void handlePizza(){ 

    System.out.println("1- standard size pizza? - $" + standardPrice + "\nOr \n2- Large pizza? - $" + largePrice); 

     Scanner pizzaSize = new Scanner(System.in); 
     int Size = pizzaSize.nextInt(); 

     if(Size == 1) 
     { 
      moneyCounter = moneyCounter + standardPrice; 
     } 
     else if(Size == 2) 
     { 
      moneyCounter = moneyCounter + largePrice; 
     } 
} 

: あなたはこのようなものを持っています。

0

同じスキャナを使用して複数の整数を尋ねることができます。あなたは、そのサイズのために再度尋ねる各ピザ

Scanner s = new Scanner(System.in); 
int pizzanum = s.nextInt();  
int moneyCounter = 0; 

for (int i=0;i<pizzanum;i++){ 
int size = s.nextInt(); 
switch(size){ 
case 1:moneyCounter += standardPrice; 
case 2:moneyCounter += largePrice 
}} 

ここでスイッチが

if(Size == 1) 
{ 
moneyCounter = moneyCounter + standardPrice; 
} 
else if(Size == 2) 
{ 
moneyCounter = moneyCounter + largePrice; 
} 

と同じであるとするループは

while(pizzaCounter < 5){ 
//things you are doing 
pizzaCounter++; 
} 
と同じです

...最後に私がfinis hedこれは2年前の質問だとわかりました...

関連する問題