将字符串输入到数组中

时间:2015-03-31 17:07:55

标签: java arrays string

我是一名初学程序员,负责创建一个程序,提示用户输入随后存储到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);
     }
}

5 个答案:

答案 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();