2013-02-18 42 views
0

我正在試驗數組,並且我可以弄清楚如何根據用戶輸入輸入2d數組的元素,我無法弄清楚如何提示用戶分開輸入2d數組的整行(每個數字之間有一個空格),而不是輸入每個數字,然後按回車鍵。我能在這裏得到一些幫助嗎?我知道這將是我的下一個測試,謝謝你們!如何將整行元素輸入到2d數組

這裏是我的代碼:

import java.util.Scanner; 

public class NewArray 
{ 
    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 
     System.out.print("Enter the number of rows: "); 
     int Rows = input.nextInt(); 
     System.out.print("Enter the number of columns: "); 
     int Columns = input.nextInt(); 

     int[][] array = new int[Rows][Columns]; 

     System.out.println("Enter the numbers in array: "); 
     for (int i = 0; i < array.length; i++) 
     { 
      for (int j = 0; j < array[i].length; j++) 
       array[i][j] = input.nextInt(); 
     } 
     System.out.println(isConsecutiveFour(array)); 
    } 

回答

0

循環rows倍,String l = input.nextLine();

分裂與分隔字符串(空格或逗號或者分號,你可以將其定義)。

當然,實現驗證邏輯。 e.g楠情況下,分裂數組的大小不匹配columns情況等

順便說一句,基於java的命名規則,更好地利用rowscolumns姓名。否則它們看起來像類....

0

那麼,你可能會促使他們爲每一行...

for (int i = 0; i < array.length; i++) { 
    // Prompt user to enter column values for each row 
    System.out.printf("Enter %d integers for row %d/%d (delimeted by spaces): ", 
    columns, i+1, rows); 
    for (int j = 0; j < array[i].length; j++) 
    array[i][j] = input.nextInt(); 
} 

輸出

[email protected]:~$ java NewArray 
Enter the number of rows: 4 
Enter the number of columns: 3 
Enter the numbers in array: 
Enter 3 integers for row 1/4 (delimeted by spaces): 1 2 3 
Enter 3 integers for row 2/4 (delimeted by spaces): 4 5 6 
Enter 3 integers for row 3/4 (delimeted by spaces): 7 8 9 
Enter 3 integers for row 4/4 (delimeted by spaces): 10 11 12 
0

一種方式做你問什麼是輸入他們輸入的內容作爲整條線。然後你看看這條線,檢查足夠的數值,如果沒有按照你的方式輸入,就會以某種方式失敗。

問題是,這使得它真的讓用戶惱火。如果它需要10個數字,並且由於錯誤計數或額外空間而輸入9或11,那麼該怎麼辦?你會怎樣做?

很大程度上取決於您的程序如何響應用戶而不是「正確」。

因此,如果他們輸入太多,你可以回顯第一個數字(達到所需的數字),並詢問是否可以使用這些。他們然後回答Y或N.

如果他們輸入太少,你可以回顯他們輸入的,然後要求更多的數字來填寫所需的計數。

所有這些變成了大量的代碼來編寫,它可能會造成不必要的麻煩 - 你必須讓它變得恰到好處,或者再次讓用戶感到困惑。

另一種可能的解決方案是讓他們一個接一個地輸入,然後向他們回傳信息,讓他們知道他們在哪裏。像「請輸入第3行元素4」這樣的內容可以幫助他們追蹤它。

也許你對此的看法越多,無論是獨立應用程序還是Web應用程序,您都能看到當今常見用戶界面的價值。例如,在網絡上,您可以向他們顯示帶有文本框的行和列的表單,並且如果某些框未填充正確,可輕鬆重新顯示該頁面。基於控制檯的用戶界面在很多年以前就已經使用過了,但它還有很多不足之處。

1

您也可以將每行作爲輸入,然後用分隔符逐個字符輸入字符。 例如

String s = sc.next(); 

     for(int j=0;j<s.length();j++) 
     { 
      array[i][j] = Character.getNumericValue(s.charAt(j)); 

     } 

或可以做

陣列[i] [j] = s.charAt(J) - '0';