Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java中的Scanner创建具有指定行大小的2D数组,而不指定列大小?_Java_Arraylist_Multidimensional Array_Java.util.scanner - Fatal编程技术网

如何使用Java中的Scanner创建具有指定行大小的2D数组,而不指定列大小?

如何使用Java中的Scanner创建具有指定行大小的2D数组,而不指定列大小?,java,arraylist,multidimensional-array,java.util.scanner,Java,Arraylist,Multidimensional Array,Java.util.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(); Array

这是一个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(); 
             } 
        } 
     }
公共类演示{
公共静态void main(字符串[]args)
{ 
扫描仪sc=新的扫描仪(System.in);
System.out.println(“输入行数”);
int n=sc.nextInt();
ArrayList[]al=新的ArrayList[n];
对于(int i=0;i
我试图通过使用ArrayList数组来实现。但是,当从用户那里获取输入时,会导致无限的输入

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

while (val != -1)
然后输入
-1
停止

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


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

while (val != -1)