2016-10-02 61 views
-4

我想從控制檯讀取五個數字。要將輸入字符串轉換爲int [x],我嘗試使用for循環的每個數字。但事實證明#1增量是死代碼和#2我的數組沒有初始化,即使我剛剛做。 我在第一次使用Java的做法,很高興聽到一些建議。將輸入字符串轉換爲int數組

我的代碼:

public static void main(String[] args) throws IOException { 

    System.out.println("Type in five Numbers"); 

    int [] array;  
    InputStreamReader isr = new InputStreamReader(System.in); 
    BufferedReader br = new BufferedReader(isr); 

    for(int x=0; x<5; x++){ 

    String eingabe = br.readLine(); 

    array[x] = Integer.parseInt(eingabe); 
    break; 
    } 

    reserve(array); } 
+3

爲什麼你在第一次迭代時會突破? – Li357

+1

1)是的,你的數組沒有被初始化,'array [x]'如何工作,因爲數組沒有大小呢? 2)你的循環中有一個break語句,所以它只會運行一次 –

+0

謝謝你的回答。 – obszoenling

回答

1

首先,你沒有初始化數組,你只聲明一個數組變量(命名的數組)。我強烈建議在繼續下一步之前閱讀並練習Java的這個基本概念,否則以後可能會感到困惑。您可以閱讀更多關於術語聲明,初始化和作業here

正如Andrew指出的,另一個問題是您在循環的第一次迭代中使用了關鍵字break。這個關鍵字終止了一段代碼,所以你的循環只運行一次,然後退出。


使用掃描儀可以大大簡化此代碼。掃描儀從指定位置讀取輸入。掃描儀的構造函數接受兩個輸入:System.in(用於計算機(鍵盤)上的默認輸入設備)或File對象(例如計算機上的文件)。

默認情況下,掃描儀將其定界符設置爲空格。分隔符指定連續標記之間的邊界,例如,如果輸入2 3 5 5,然後運行循環並調用scanVarName.nextInt()方法,它將忽略空格並將該單行中的每個整數視爲其自己的標記。

所以,如果我理解正確,你想讀取來自用戶的輸入(誰可能輸入整數),並且你想要將它們存儲在整數數組中,對嗎?如果您知道用戶將輸入多少個整數,則可以使用以下代碼執行此操作。你可以先提示他們告訴你他們打算多少整數進入:

// this declares the array 
int[] array;  

// declares and initializes a Scanner object 
Scanner scan = new Scanner(System.in); 

System.out.print("Number of integers: "); 

int numIntegers = scan.nextInt(); 

// this initializes the array 
array = new int[numIntegers]; 

System.out.print("Enter the " + numIntegers + " integers: "); 

for(int i = 0; i < numIntegers; i ++) 
{ 
    // assigns values to array's elements 
    array[i] = scan.nextInt(); 
} 

// closes the scanner 
scan.close();  

然後,您可以使用for-each循環通過項目的陣列中運行,並打印出來,確認上面的代碼按預期工作。

+0

感謝您的幫助。我只是用你的代碼,它運行得非常好。 – obszoenling