有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将整行元素输入2d数组

我正在试验数组,虽然我可以根据用户输入确定如何输入2d数组的元素,但我无法确定如何提示用户单独输入2d数组的整行(每个数字之间有一个空格),而不是输入每个数字,然后按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) 个答案

  1. # 1 楼答案

    嗯,你可以在每一行提示他们

    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
    
  2. # 2 楼答案

    您还可以将每一行作为输入,然后使用分隔符逐个字符地输入。 e、 g

    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'

  3. # 3 楼答案

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

    使用分隔符(可以定义空格、逗号或分号)拆分字符串

    当然,要实现验证逻辑。e、 g Nan情况下,拆分的数组大小与columns情况等不匹配

    顺便说一句,基于java命名约定,最好使用rowscolumns作为名称。否则,它们看起来就像班级

  4. # 4 楼答案

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

    问题是,这让用户非常恼火。如果它需要10个数字,而他们输入9或11是因为一个错误的计数或一个额外的空格,其中一个周期应该是?你打算怎么办

    这在很大程度上取决于你的程序如何响应用户不“正确”的操作

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

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

    所有这些都变成了大量的代码需要编写,而且可能很挑剔——您必须正确地编写,否则会让用户感到困惑

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

    也许你对这方面研究得越多,你就越能看到当今通用用户界面的价值,无论是对于独立应用程序还是web应用程序。例如,在web上,您可以向他们显示一个包含文本框行和列的表单,如果某些框没有正确填写,您可以轻松地重新显示该页面。基于控制台的用户界面在很多年前就已经被使用了,但是它还有很多需要改进的地方