我是一名初学程序员,负责创建一个程序,提示用户输入随后存储到String数组中的元素数。赋值的第二部分是按升序列出数组。但我有点卡在第一部分。如果用户输入,则在输入第3个字符串后将有3个元素,我得到一个越界异常。以下是代码。
import java.util.*;
public class arrays
{
public static void main(String[]arg)
{
Scanner input = new Scanner(System.in);
//Read user input.
System.out.print("How many Elements? ");
int num = input.nextInt();
String array[]= new String[num];
for (int i = 1 ; i <= num; i++ )
{
System.out.print("Enter element "+ i +": ");
array[i] = input.next();
}
System.out.println(array);
}
}
答案 0 :(得分:2)
数组索引从0
开始,所以你的循环应如下所示:
for (int i = 0 ; i < num; i++ )
{
System.out.print("Enter element "+ (i+1) +": ");
array[i] = input.next();
}
请注意,我还在+1
中添加了System.out.print
以显示“用户友好”输出(例如,“输入元素1:”而不是“输入元素0:”作为第一个元素)。 / p>
另一种选择是在访问数组时减去1
,这样可以保留现有的System.out.print
行:
for (int i = 1 ; i <= num; i++ )
{
System.out.print("Enter element "+ i +": ");
array[i - 1] = input.next();
}
虽然我觉得这种做法略显不常见。
答案 1 :(得分:0)
Java中的数组从零开始编号,这意味着,长度为3的数组具有以下有效索引:
array[0]
array[1]
array[2]
我想这足以让你走上正确的轨道; - )
答案 2 :(得分:0)
从i = 0开始,然后上升到i&lt; num,因为在示例中有三个数组从0开始并且最多为2,所以难怪有超出范围的异常。这应该可以解决错误。
答案 3 :(得分:0)
您收到错误,因为array
索引以0
开头。您应该将循环更改为:
for (int i = 0 ; i < num; i++ )
答案 4 :(得分:-1)
更改为array[i-1] = input.next();