我正在尝试创建一个允许用户将数字输入到名为“numArray”的数组中的程序,但是一旦用户将数字输入到数组中,就会抛出异常。怎么解决这个问题?
import java.util.Scanner;
class ArrayNumList
{
public static void main(String[]args)
{
Scanner in = new Scanner(System.in);
System.out.println("How many nums would you like to enter? ");
int n = in.nextInt();
System.out.println("Enter " + n + " nums");
int[] numArray = new int[n];
for(int i = 0; i <= n; i++)
{
int index = in.nextInt();
System.out.print(numArray[index]);
}
}
}
答案 0 :(得分:1)
如果用户插入足够多的数字/负数,则没有index
索引。通过使用像这样的实际循环变量i
来修复它:
for(int i = 0; i <= n; i++) {
numArray[i] = in.nextInt();
System.out.print(numArray[i]);
}
答案 1 :(得分:0)
问题是您没有将数据存储在数组中的任何位置。
for(int i = 0; i <= n; i++)
{
int index = in.nextInt();
System.out.print(numArray[index]);
}
每次运行数组时,都会将输入存储到变量index
中。从那里,您尝试在该索引处显示数组中的值。这可能会导致一些问题。
1)你还没有把你的数字放到这个数组中,所以数组中的每个值都是0.要解决这个问题:
numArray[i] = in.nextInt();
2)如果有人输入的数字大于数组的大小,您将获得IndexOutOfBoundsException
。我不认为你是这样做的,但这就是你的代码目前正在尝试做的事情。
答案 2 :(得分:0)
有3个问题: -
1)使用i&lt; n从0开始
2)尝试在数组中添加输入值作为索引。
3)在输入时打印出值,这样可以让你更好地在单独的循环中做到这一点,但我把它留给你或者更好地使用println而不是print
试试这个: -
public static void main(String[]args) {
Scanner in = new Scanner(System.in);
System.out.println("How many nums would you like to enter? ");
int n = in.nextInt();
System.out.println("Enter " + n + " nums");
int[] numArray = new int[n];
for(int i = 0; i < n; i++)
{
numArray[i] = in.nextInt();
System.out.println(numArray[i]);
}
}
答案 3 :(得分:0)
首先它应该是i<n
而不是i<=n
,因为n
表示数组长度,i
表示数组索引。索引从0开始。例如,数组保持值1234,因此长度为4但索引为0,1,2,3。所以索引总是小于数组长度。您还必须使用数组索引存储输入。
for(int i = 0; i < n; i++)
{
numArray[i] = in.nextInt();
}
然后打印出来
for(int i = 0; i < n; i++)
{
System.out.println(numArray[i]);
}