2011-12-19 84 views
1

我已經在很多方面嘗試了下面的代碼,但它不起作用。我有兩個問題。如何更好地編寫以下Java代碼?

  1. 我需要它不會繼續QUANTITY當我按X.
  2. 如果我想繼續,也就是說,我不按X,但輸入的代碼,我應該被壓着,它正確地採取第一輸入但是,當它繞過第二個類型的循環時,它會在同一行輸出類似「CODE:QUANTITY:」的內容。

我真的很感謝這裏的幫助,因爲我被卡住了,谷歌沒有任何幫助。我對編程完全陌生,以前沒有任何語言的經驗,所以我非常感謝幫助。

下面的代碼:

import java.util.Scanner; 
class WHY 
{ 
    public static void main(String[] args) 
    { 
      Scanner in = new Scanner(System.in); 
      boolean count = true; 

      for (int i = 0; count; i++) 
      { 
       System.out.print("CODE: (X to terminate)"); 
       String code = in.nextLine(); 
       System.out.print("QUANTITY: "); 
       int quantity = in.nextInt(); 

       if (code.equals("X")) 
        count = false; 
      } 
    }  
} 

回答

2
Scanner in = new Scanner(System.in); 

    while (true) { 
     System.out.print("CODE: (X to terminate)"); 
     String code = in.nextLine(); 
     if (code.equalsIgnoreCase("x")) { 
      break; 
     } 

     System.out.print("QUANTITY: "); 
     int quantity = in.nextInt(); 
     in.nextLine(); 
    } 
+2

從來沒有聽說過'String.equalsIgnoreCase()'的??? – Bohemian 2011-12-19 11:56:16

+0

@波希米亞謝謝!我只是忘記了!我編輯了答案。 +1的評論。 – Jomoos 2011-12-19 11:58:20

0

使用System.out.println()。這將創建一個新的線。

1

這是關於如何簡化語句(將其安排爲適合您的類)的示例程序性僞代碼。

private static final String QUIT = "X"; 
String code = "" 

while (!(code = readCode()).equalsIgnoreCase(QUIT)) { 
    //Process the code read.... 
    System.out.println(); 
    System.out.print("QUANTITY: "); 
    int quantity = in.nextInt(); 
} 

public String readCode() { 
    Scanner in = new Scanner(System.in); 
    System.out.println(); 
    System.out.print("CODE: (X to terminate)"); 
    return in.nextLine(); 
} 
+0

你在某處遺漏了一個'!'嗎? '.equalsIgnoreCase()'做了什麼? – Bohemian 2011-12-19 11:58:20

+0

@波希米亞,謝謝....修正。 – 2011-12-19 12:14:38

0

既然你想盡快當用戶輸入「X」打破循環,您可以使用break關鍵字來停止循環。我還建議用while(true)循環替換您的for循環。這將持續循環(這是break關鍵字用來阻止它無限循環的地方)。 System.out.print在同一行中打印文本,使用System.out.println()打印文本並移至下一行。最後,您應在讀取code值之後移動條件聲明,並用break替換count = false

作爲最後一個提示,我建議您在有if else聲明時使用大括號。這可以幫助您在開發時解決問題,當您需要添加額外的語句並忘記大括號或者太累以至於無法注意時)。

0
  • 使用while循環來布爾條件,特別是如果你不使用任何索引。使用for循環迭代序列的元素。
  • 使用break語句來退出,而不是使用布爾條件**
  • 使用Java編碼風格
  • 使用的System.out.println輸出文本的線環。

所以基本上:

import java.util.Scanner; 
class WHY { 
    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 

     while(true) { 
      System.out.print("CODE: (X to terminate)"); 
      String code = in.nextLine(); 
      System.out.println("QUANTITY: "); 
      int quantity = in.nextInt(); 

      if (code.equals("X")) 
       break; 
     } 
    }  
} 

**品味的問題

0

保持簡單:

Scanner in = new Scanner(System.in); 
int total = 0; 
while (true) { 
    System.out.print("CODE: (X to terminate)"); 
    String code = in.nextLine(); 
    if (code.equalsIgnoreCase("x")) { 
     break; 
    } 
    System.out.print("QUANTITY: "); 
    int quantity = in.nextInt(); 
    total += quantity; 
} 
System.out.print("The total is: " + total);