2015-10-28 35 views
-2

我在while循環中練習條件,並對它有點困惑。如何使用|和&在Java中,而正確地超過2個值循環?

我有一個簡單的程序,應該通過控制檯(使用掃描儀)從用戶讀取輸入。如果輸入不等於某個字符串值,它應該輸出錯誤並要求用戶再次輸入。

Scanner input=new Scanner(System.in); 

    System.out.print("ENTER YOUR NAME : "); 
    user=input.next(); 

    while(!user.equals("admin") && !user.equals("vlad") && !user.equals("user")) 
    { 
     System.out.println("THIS USERNAME IS NOT REGISTERED"); 
     user=input.next(); 
    } 

所以我認爲,當我們輸入管理員,while循環應該是這個樣子: while(F && T && T),它應該打破循環,並進入下一個指令,但輸入後程序崩潰。

如果我們輸入任何值,我們應該得到 while(!F && !F && !F)它應該在while循環中執行指令,但它不會。那麼,我在這些條件下做錯了什麼?

+0

或許崩潰是由循環後到來的代碼引起的。 – Eran

+0

這段代碼後面只有siwtch(用戶),程序在while循環的階段崩潰了 –

+0

你打算說'while(!F &&!F &&!F)'它不打印'System。 out.println(「這個用戶名沒有註冊」);'? – Rehman

回答

-1

如下修復它;

你需要有String user,並使用&&

Scanner input=new Scanner(System.in); 

System.out.print("ENTER YOUR NAME : "); 
String user = input.next(); 

while(!user.equals("admin") && !user.equals("vlad") && !user.equals("user")) 
{ 
    System.out.println("THIS USERNAME IS NOT REGISTRED"); 
    System.out.print("ENTER YOUR NAME : "); 
    user = input.next(); 
} 
+0

有用戶聲明在程序的頂部,所以我沒有複製代碼的那部分:)。 Alredy嘗試了OR條件,但它只是讓我輸入無限次的用戶名。 –

+0

您使用的是JDK6還是7?我已經把上面的代碼放在主要方法中,並且能夠乾淨地運行它。當我輸入管理員作爲程序停止的用戶名。否則它保持循環。 –

+1

這種情況會導致無限循環。 – Eran

相關問題