2016-02-05 130 views
-2
String clientName; 
do 
{ 
    System.out.println("Enter your Name"); 
    while (keyboard.hasNextInt()) 
    { 
     System.out.println("That's not a name!"); 
     keyboard.next(); 
     System.out.println("Enter your Name"); 
    } 
    clientName = keyboard.nextLine(); 

} while (clientName.equals("")); 

任何想法爲什麼此代碼提出「非法啓動類型」,我拉我的頭髮。Do-While循環錯誤

編輯:ALL MY CODE AS REQUESTED

+1

(1)發佈所有的代碼(除非*是*所有的代碼,在這種情況下,你錯過除其他事項外類定義)(2)告訴我們哪一行是編譯錯誤。 – assylias

+1

我的猜測是,問題是這個代碼不在一個>>方法<< –

+0

我編輯了我的主要帖子。 –

回答

0

我在這裏看到的唯一的問題是,你還沒有初始化字符串clientName。您應該使用""進行初始化。

這裏是一個修正的代碼片段:

public static void main (String[] args) 
{ 
    String clientName = ""; 
    Scanner keyboard = new Scanner(System.in); 
    do 
    { 
     System.out.println("Enter your Name: "); 
     while (keyboard.hasNextInt()) 
     { 
      System.out.println("That's not a name!"); 
      keyboard.next(); 
      System.out.println("Enter your Name: "); 
     } 
     clientName = keyboard.nextLine(); 
    } while (clientName.equals("")); 
} 
+0

*「你應該用''」'「*初始化它。他爲什麼要這樣做?你在哪裏看到改進? *「您應該使用'Scanner'來獲取來自'System.in'的輸入。」*您認爲他的代碼中的「keyboard」是什麼?或者其他:你爲什麼認爲它還不是「掃描儀」? – Tom

+0

@Tom感謝您的回覆。我讓他用''「'初始化它,因爲他稍後檢查'clientName.equals(」「)'。如果我們不初始化它,那麼它會拋出一個編譯器錯誤。對不起,我還沒有意識到'keyboard'只是Scanner。更新瞭解決方案。 – user2004685

+0

他在do/while循環中初始化了這個變量,所以如果它到達'while'部分的檢查,它將被賦值爲一個值。但你通常是對的,需要初始化他的變量,否則他會得到一個編譯器錯誤。 – Tom