2015-12-02 108 views
-2

我找不出爲什麼我的代碼永遠打印。我嘗試了一個塊(將顯示原來的位置),但我希望在打印「幫助」後繼續。我的代碼如下。我認爲這是循環...但我沒有涉及太多。爲什麼永遠打印一次又一次?

boolean yes = true; 

while(yes) { 
    if(str1.equalsIgnoreCase("Exit")) { 
     System.exit(0); 
    } else if (str1.equalsIgnoreCase("Help")) { 
     for(int g = 0; g < 2; g++) { 
     System.out.println(" Accepted commands:\n exit\n help\n load [filename]\n students\n search [partial name]\n assignments\n grades\n student [student name]\n assignment [assignment name]\n"); 
     } 
     //I added the break here and it did print out once but I did not want it to end the program. With the break I did not need the for statement. 

    } else if (str1.equalsIgnoreCase("Load")) { 

    } 
+2

你永遠不會改變yes'的'價值或'str1'在'while'循環 – dotvav

+0

你的代碼,這甚至不會編譯如,從來沒有碰到一個合乎邏輯的情況,它會從循環中斷開。這真的很難理解嗎? –

+0

對不起,我沒有像你一樣從子宮內開始編程,Tim。 – MarkyMark

回答

3

在循環內從不改變str1的值。也許你錯過了一些需要用戶輸入新內容的語句。

+0

謝謝我把它放在了錯誤的地方 – MarkyMark

0

yes設置爲true,你永遠不改變它在環

1

首先

boolean yes = true; 

while(yes) { 

你永遠設置yes

其次

if(str1.equalsIgnoreCase("Exit")) { 
     System.exit(0); 

str1永遠不會設置在循環中,例如VEN到"Exit"

0

閱讀STR1內循環:

DataInputStream in = new DataInputStream(System.in); 
str1=in.readLine(); 

    while(true) { 
     str1=in.readLine();