2016-11-11 163 views
1

我遇到了我的方法之一的一個問題:讀取用戶輸入:無輸入值v一個輸入值

public static int readIntoArray(Scanner input, int[] nums) { 
    int i = 0; 
    int count = 0; //Will hold the number of values in array 

    if (input.hasNextInt() == false) { 
     count = 0; 
    } 

    else{ 
     int num = input.nextInt(); 

     do { 
      nums[i] = num; 
      i++; 
      count++; 
      num = input.nextInt(); 
      if (input.hasNextInt() == false) { 
       nums[i] = num; 
       count++; 
      } 
      else { 

      } 
     } while(input.hasNextInt() && i < 100); 
    } 

    return count; 
} 

這是我的程序的一種方法。我之前的問題是,如果用戶在不輸入任何值的情況下點擊輸入,我會得到一個錯誤。我通過在上面的代碼中創建了if-else語句來解決這個問題。

但是由於這是該方法的開始部分,所以當用戶只輸入一個值時會出現錯誤。我不知道如何解決這個問題,因爲如果我移動第一個if語句,那麼當用戶輸入任何值時都會出現錯誤。我很困惑如何讓這個在兩種不同的場景中表現出色。

基本上,上面的方法在用戶輸入一個值時不起作用。

+0

* psst *,https://youtu.be/0Brn4YF_LY4 – Arvind

回答

0

試試這個,它更簡單:

public static int readIntoArray(Scanner input, int[] nums) { 

    int count = 0; // Will hold the number of values in array 

    while(input.hasNextInt() && count < 100) { 
     nums[count] = input.NextInt(); 
     count++; 
    } 

    return count; 
} 

假設您只有一個輸入值。因爲你增加count之後你的代碼中斷,設置num下一個INT(不存在):

num = input.nextInt(); // there isn't a next int! 

而且,我認爲邏輯是關在do whileif循環。假設你有一個輸入3,我們已經解決了單輸入錯誤。前右起第二個if聲明:

  • i爲1
  • count爲1
  • nums[0]爲3

    接下來,if (input.hasNextInt() == false)將評估爲true,因爲3是我們唯一的輸入。然後:

  • i仍爲1

  • count現在是2
  • nums[1]爲3

我幾乎可以肯定這是不是你想發生什麼。

+1

哦,我看到我做了什麼。這是我第一次使用input.hasNextInt()方法,所以我不完全確定如何實現它。現在好了,比較代碼是有意義的。謝謝! – Jay58t