【问题标题】:How to create 2D array with specified row size without specifying columns size using Scanner in Java?如何使用 Java 中的 Scanner 创建具有指定行大小的二维数组而不指定列大小?
【发布时间】:2020-04-05 11:38:57
【问题描述】:

这是一段java代码

    public class Demo { 
        public static void main(String[] args) 
        { 
            Scanner sc=new Scanner (System.in);
            System.out.println("enter the no of rows");
            int n =sc.nextInt(); 
            ArrayList<Integer>[] al = new ArrayList[n]; 
            for (int i = 0; i < n; i++)
            { 
                al[i] = new ArrayList<Integer>(); 
            } 
            System.out.println("enter the value");
            int val=0;
            for (int i = 0; i < n; i++) 
            {   
                while(val!='\n')
                {
                    val=sc.nextInt();       
                    al[i].add(val);
                }
            }
            for (int i = 0; i < n; i++) { 
                  for (int j = 0; j < al[i].size(); j++) { 
                    System.out.print(al[i].get(j) + " "); 
                 } 
                System.out.println(); 
             } 
        } 
     }

我曾尝试通过使用ArrayList的数组来实现。但是从用户那里获取输入会导致无限的输入

【问题讨论】:

    标签: java arraylist multidimensional-array java.util.scanner


    【解决方案1】:
    while(val!='\n')
    

    valint,不要将其与换行符字符进行比较。将其更改为:

    while (val != -1)
    

    然后输入-1停止。

    如果用户可以输入 -1 作为有效元素,您可以将 val 更改为字符串,替换 sc.nextInt() 调用,并将输入解析为 int。确保您使用 .equals() 而不是 == 比较字符串。


    换行符 ('\n') 的 ASCII 值为 10。因此,如果您选择继续使用当前代码,则必须通过输入值 10 来停止循环(这会很奇怪,而且,10 不能作为有效元素添加)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-04
      • 1970-01-01
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-26
      相关资源
      最近更新 更多