2016-04-03 88 views
1

如下面的代碼是如何工作很困惑:當main方法調用方法時,方法是否執行從上到下?

static Scanner sc = new Scanner(System.in); 

    public static int GetAnInteger() 
    { 
     while (!sc.hasNextInt()) 
     { 
      sc.nextLine(); 
      System.out.print("That's not " 
        + "an integer. Try again: "); 
     } 
     return sc.nextInt(); 
    } 

我明白.hasNextInt()記錄的值,並作爲一個布爾值,以測試它是否是一個int類型。 .nextLine()記錄下一行,但它如何調試循環?

另外,當我執行代碼,是不是系統應該打印語句後,我輸入到.nextLine()?

+0

不知道sc是什麼類,這是很難解釋,雖然我可以猜測。你能否更新這個問題來澄清這個帖子? – Prisoner

+1

以調用它們的順序調用方法;不一定是自上而下。 –

+0

如果你立即輸入一個'int',循環將被有效地跳過。 –

回答

2

感嘆號表示布爾值不是。所以它翻轉布爾值的值。真是假。虛假成真。

的這段代碼的含義的英文簡短摘要如下:

雖然他們不是整數旁邊,讀取下一行,並忽略該行並打印「這不是一個整數...」。如果一個整數是下一行,則返回下一行。

希望這有助於您更好地理解代碼。評論你是否想要更詳細的解釋

相關問題