0

我正在尝试使用数组,虽然我可以弄清楚如何根据用户输入输入二维数组的元素,但我无法弄清楚如何提示用户分别输入二维数组的整行(在在每个数字之间),而不是输入每个数字,然后按 Enter。我可以在这里得到一些帮助吗?我知道这将在我的下一次测试中,谢谢大家!

这是我的代码:

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));
    }
4

4 回答 4

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';

于 2014-09-22T05:50:12.517 回答
0

循环rows时间,和String l = input.nextLine();

用分隔符分割字符串(空格或逗号或分号,你可以定义它)。

当然,实现验证逻辑。例如 Nan 大小写、拆分数组大小与大小写不匹配columns等。

顺便说一句,基于 java 命名约定,最好使用rows,columns作为名称。否则它们看起来像类....

于 2013-02-19T00:14:54.907 回答
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();
}

输出

user@ubuntu:~$ 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
于 2013-02-19T00:15:01.820 回答
0

执行您要求的一种方法是将他们输入的内容作为一整行输入。然后,您查看该行并检查是否有足够的值,如果它们没有按照您的方式输入,则以某种方式失败。

问题在于,这对用户来说真的很烦人。如果它需要 10 个数字并且由于计数错误或句号应该有多余的空格而输入 9 或 11 怎么办?你会怎样做?

很大程度上取决于您的程序如何响应用户没有“正确”执行它。

因此,如果他们输入太多,您可以回显第一个数字(直到所需的数字)并询问是否可以只使用这些数字。然后他们回答 Y 或 N。

如果他们输入的太少,您可以回显他们输入的数字,然后要求更多的数字来填写所需的计数。

所有这一切都变成了要编写的大量代码,而且可能很挑剔——你必须把它弄得恰到好处,否则,它又会使用户感到困惑。

另一种可能的解决方案是让他们一个一个地输入它们,然后您将信息回显给他们,以便他们知道自己在哪里。诸如“请在第 3 行输入元素 4:”之类的内容将帮助他们跟踪它。

也许您对此研究得越多,您就越能看到当今通用用户界面的价值,无论是对于独立应用程序还是 Web 应用程序。例如,在网络上,您可以向他们展示一个包含文本框行和列的表单,并且如果某些框没有正确填写,则可以轻松地重新显示该页面。基于控制台的用户界面已在多年前使用,但仍有很多不足之处。

于 2013-02-19T00:16:59.493 回答