2012-10-04 42 views
2

我有一個客戶端 - 服務器基於控制檯的應用程序,在客戶端我已經使用的switch語句,用於選擇選項,例如上載/下載/改變密碼等。當用戶進入用於假設返回控制切換語句在Java?

 String userchoice = console.readLine("Enter your choice :"); 
     int choice= Integer.parseInt(userchoice); 
     switch (choice){ 
     case 3: 
     ........ 
     Socket soc = new Socket("localhost", 6007); 
     String reply; 
     String client = username; 
     char newpswd[] = console.readPassword("Enter your new Password :"); 
     String newpwd=new String(newpswd); 
     char newpswd1[] = console.readPassword("Confirm your new Password :"); 
     String newpwd1=new String(newpswd1); 
     if(newpwd.equals(newpwd1)) { 
     ........ 
     } 
     else { 
     S.O.P ("Passwords don't match"); 
     } 
     break; 

一個號碼的處理之後已完成,那麼我需要再次發送用戶切換(選擇)語句,要求輸入選項號碼。我試過繼續,返回但沒有爲我工作。 return - 將返回到JVM,我想,這是退出程序。由於goto沒有在Java中使用,我的選擇是什麼?

回答

7

過程已經完成後,然後我需要發送的用戶切換(選擇)語句再次

然後,你需要一個循環:

while (!quit) { 
    String userchoice = console.readLine("Enter your choice :"); 
    ... 
    switch (...) { 
     ... 
    } 
} 
0

可以使用while循環,它將一直執行,直到它的條件爲false或直到它從內部被破壞爲止。

while (some condition) { 
    String userchoice = console.readLine("Enter your choice :"); 
    ...... 
    if (some case is met) { 
     break; 
    } 
} 
5
do { 

... 

}while(choice != EXIT_CHOICE); 

其中EXIT_CHOICE是一個常數

0

你可以把它們都放在一個返回布爾值,真要是密碼相匹配的方法,否則爲false。然後,你可以使用類似:

boolean loginSuccess = false; 
while (!loginSuccess) { 
    loginSuccess = loginMethod(); 
} 

編輯

或者你可以使用一個do循環...

do { 
    String userchoice = console.readLine("Enter your choice :"); 
    int choice= Integer.parseInt(userchoice); 
    switch (choice){ 
    case 3: 
    ........ 
    Socket soc = new Socket("localhost", 6007); 
    String reply; 
    String client = username; 
    char newpswd[] = console.readPassword("Enter your new Password :"); 
    String newpwd=new String(newpswd); 
    char newpswd1[] = console.readPassword("Confirm your new Password :"); 
    String newpwd1=new String(newpswd1); 
} while (!newpwd.equals(newpwd1)); 
0

它不以這種方式工作。當你到達一個開關時,它會決定(基於評估的表達式和選擇),這將成爲下一個要執行的操作,並且什麼也不做(這就是爲什麼你需要break語句來避免碰到下一個一堆代碼)。

將開關切換到循環或調用兩次的函數中。