0

我正在尝试制作一个程序来检索用户输入的无数数字,直到用户退出并显示数字。这是我到目前为止的代码。输入第一个和第二个数字后,它在该行显示异常数组1[i]=s1

import java.util.Scanner;

公共类 Program_2 {

public static void main(String[] args) {
    int a=1,i;
    Scanner sn = new Scanner(System.in);
    String[] array1= new String[a];     
    for(i=0;i<a;i++)
    {   


        System.out.println("Enter Value Number "+ (i+1));
        System.out.println("Press Q or q to Exit");
        String s1=sn.next();
        if(s1.equalsIgnoreCase("q"))
        {               
            for(i=0;i<a;i++)
            {                   
                System.out.println("Value of Number "+(i+1)+" is "+ array1[i]);

            }
            a=0;
        }
        else
        {
            array1[i]=s1;
            a=(i+2);
        }

    }

}

}

4

2 回答 2

0

array的大小为 1(代码开头的 a 为 1)。第一个输入有效,因为 i 是 0 并且array1[0]存在。第二个输入崩溃,因为array1[1]不存在。

你需要增加你的数组。这可以通过将数组复制到更大的数组中并使用复制的结果来完成,但这很笨拙。

更好的方法是使用 anArrayList而不是 simple array,您不必担心大小,因为它是自动管理的。

于 2013-01-19T06:25:08.023 回答
0

一方面,只有当他们按 q 时,当您转到 else 语句时,a 才会增加。所以 for 循环将在几次迭代后结束。

您还在 for 循环内部将 a 设置为 0,以确保它不会运行更多。

此外,您的退出代码不会退出。

于 2013-01-19T06:27:52.827 回答