java - 如何使用 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 的数组来实现。但是,虽然从用户那里获取输入会导致无穷大的输入
解决方案
while(val!='\n')
val
是一个int
,不要将它与换行符比较。将其更改为:
while (val != -1)
并进入-1
停止。
如果用户可以输入 -1 作为有效元素,则可以更改val
为字符串,替换sc.nextInt()
调用,并将输入解析为 int。确保使用.equals()
and not比较字符串==
。
换行符 ('\n') 的 ASCII 值为 10。因此,如果您选择继续使用当前代码,则必须通过输入该值来停止循环10
(这很奇怪,而且 10 也可以) t 作为有效元素添加)。
推荐阅读
- sql - Pivot function returning null values
- reactjs - Unhandled JS Exception: Can't find variable: require
- dynamics-crm - 如何验证上传到 Dynamics Portal 的文件
- bash - 将带有路径的文件名与文件一起移动到目录中的文件
- javascript - 单击第一个元素时,更改第二个元素的样式
- android - 如何在 Android 上刷新 Token
- arrays - required array fields with another array fields in Laravel
- html - 如何将 svg 与 bootstrap 3 中的标题导航对齐?
- excel - 检测 Application.EnableEvents 变化
- junit - java.lang.AssertionError:预期状态:<200> 但原为:<400>