2013-02-18 75 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';

相关问题