2012-05-07 3 views
-1

궁금한 점이 있는데 어떻게이 코드를보다 효율적으로 만들 수 있습니까? 만약 내가 계속한다면 엄청나게 중복 될 것입니다 ... 제발, 당신이 그것을 간단하게 유지하면 좋을 것입니다 ...어떻게하면 더 효율적으로 만들 수 있습니까? - Java의 IF 문

나는이 코드를 가지고 시작했고,

나는 종류의이 두 가지 코드를 병합 할
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"); 
       } 

      } 

     } 

, 난 그냥 아무 생각이 어떻게 : 입력 및 ... 나중에 변수에 이런 식으로 뭔가를 보관 (1 말할 수 있습니다). 는 (이 두이 텍스트 위의 비트되고, 아래의 비트)

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"); 
       } 

중복이 들어오는 곳입니다은 ...

if (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"); 
       } 
      } 

     } 
     System.out.println("The Subtotal is: $" + moneyCounter + "\n"); 
    } 
+1

@Vanaya 피자 == 1 및 피자 == 2 일 때 수행중인 변경 사항은 무엇입니까? – Maddy

+3

다음 번에 더 많은 답변을 얻으려면 도움이되지 않는 코드를 잘라야합니다. 우리 중 많은 사람들이 너무 많은 독서를하는 경우 질문을 무시합니다. 간결하게하면 더 많은 답변을 얻는 데 도움이됩니다. –

+0

루프의 반복마다 Scanner 객체를 다시 초기화한다는 인상을받습니다. 이 재 초기화 없이는 아마 할 수 있습니다. if/else for Pizza == 1, Pizza == 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

동일한 스캐너를 사용하여 둘 이상의 정수를 요청할 수 있습니다. 여기에 스위치가

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

와 같은 루프에 대한이

while(pizzaCounter < 5){ 
//things you are doing 
pizzaCounter++; 
} 
과 동일하다

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

당신이 그 크기에 대해 다시 물어 각각 피자

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

,

... 마지막으로 finis hed 이것은 2 년 전의 질문입니다.

관련 문제