在我的程序中,我想使用Scanner
显示数组,即用户在运行时输入数组值。
public class NameComparator {
public static void main(String args[]) {
Scanner sn = new Scanner(System.in);
int n = sn.nextInt();
System.out.println("the array size is" + n);
int[] a = new int[7];
for (int i = 0; i >= a.length; i++) {
a[i] = sn.nextInt();
System.out.println("the value of a[i]" + a[i]);
}
sn.close();
System.out.println("array values are");
}
}
在这里,我从Scanner
获得了数组大小,然后使用for
循环来获取每个数组值,但我不知道为什么数组块没有被执行。 JVM只是跳过for
循环。 Scanner
效果很好
答案 0 :(得分:1)
几乎没有问题:
int[] a= new int[7];//<-- why hard coded?
int[] a= new int[n];// try, you already have array size from user
for(int i=0;i>=a.length;i++)//<-- condition fails, i is 0 for the first time
for(int i=0; i < a.length; i++)//try this
答案 1 :(得分:1)
此:
for(int i=0;i>=a.length;i++)
应该是:
for (int i = 0; i < a.length; i++)
只要i
小于a.length
(即数组的大小),就要循环。
如果终止条件返回false
,则将退出(或跳过)for循环。由于您使用i
初始化0
,i>=a.length
(即0 >= 7
)将立即false
。
请注意,我写过i < a.length
而不是i <= a.length
。数组大小当前设置为7
,因此有效索引从0
到6
。如果您尝试访问索引ArrayIndexOutOfBoundsException
,则会获得7
。
您忘记使用变量n
来设置数组大小:
int[] a= new int[n];
答案 2 :(得分:1)
仔细查看你的for循环。
for(int i=0;i>=a.length;i++)
请注意,您使用的是大于号。
由于i
等于0,a
的长度必须为0才能运行此循环,并且我们已经知道您声明a
的长度为7。 / p>
答案 3 :(得分:1)
更改以下代码
for(int i=0;i>=a.length;i++) with for(int i=0;i<a.length;i++)
条件应为<
而不是>=
使用sn.hasNext()
也可以简化解决方案。
答案 4 :(得分:1)
我会做一些搜索,因为有很多类似的问题。
无论如何,你有一些不正确的事情。您提示用户输入数组大小,然后将其丢弃并改为使用7:
int[] a= new int[7];
所以,这应该是:
int[] a= new int[n];
第二,你的循环条件:
for(int i=0;i>=a.length;i++)
只要i 大于a,,只要a是正整数(因为我从零开始),它就永远不会发生。因此,如果我们使用的是less,我们还应该记住数组是零索引的,所以如果你输入一个值3,你只想填充索引0,1和2.
所以,这应该是:
for(int i=0;i < a.length;i++)
最后,记得提示用户,即使这只是一个学习练习,这是一个很好的做法。把它们放在一起,你会得到这样的东西:
public static void main(String args[])
{
Scanner sn=new Scanner(System.in);
System.out.println("Please enter an array size:" );
int n=sn.nextInt();
System.out.println("the array size is "+ n);
int[] a= new int[n];
System.out.println("Please enter your " + n + "array values:");
for(int i=0;i < a.length;i++)
{
a[i]= sn.nextInt();
System.out.println("The value of a[" + i + "] is " + a[i]);
}
sn.close();
System.out.println("Array values are " );
for (int arrayValue : a)
System.out.println(" " + arrayValue);
}