首页 > 解决方案 > 如何使用 Java 中的 Scanner 创建具有指定行大小的二维数组而不指定列大小?

问题描述

这是一个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 的数组来实现。但是,虽然从用户那里获取输入会导致无穷大的输入

标签: javaarraylistmultidimensional-arrayjava.util.scanner

解决方案


while(val!='\n')

val是一个int,不要将它与换行符比较。将其更改为:

while (val != -1)

并进入-1停止。

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


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


推荐阅读