在数组中逐个输入java字符

时间:2018-04-30 04:52:40

标签: java arrays for-loop character

我试图接受用户输入并将其放入角色阵列然后将其打印出来....它是一个更大的程序的一部分,因为我是新的编码器,我希望你能保持简单的程序,而不是.... 我得到错误"数组索引超出范围"。我尝试改变阵列的长度,但仍然无法正常工作。

public static void main(String[] args) {
        // TODO Auto-generated method stub


        char[] ToEdit = new char [];

        Scanner sc = new Scanner(System.in);
        for (int i=0; i<5; i++)
        {
            System.out.println(i + ":");
            ToEdit[i] = sc.next().charAt(i);
        }
        System.out.println(ToEdit);

    }

谢谢

2 个答案:

答案 0 :(得分:2)

问题在于:char[] ToEdit = new char [];

在该行上,您将创建一个没有大小的空数组。您需要将其更改为:char[] ToEdit = new char [5];

此外,您需要将此更改为ToEdit[i] = sc.next().charAt(i);ToEdit[i] = sc.next().charAt(0);。您当前行的问题在于,即使您输入1个字符,您的代码也会查找更多内容。

作为旁注,建议您将数字5提取为变量。这样,您只需更改一个位置即可增加或减少程序可处理的字符数。

作为进一步的练习,您可以查看列表,了解如何使程序更灵活,而无需为阵列定义大小。

答案 1 :(得分:0)

这不会编译,因为您需要先添加char数组长度: char [] ToEdit = new char [5]; 然后这段代码ToEdit [i] = sc.next()。charAt(i);生成String数组超出绑定的异常。因为charAt(i)每次都在0,1,2,3,4等字符串中找到char,如下所示(程序的输出)。所以你需要把它改成ToEdit [i] = sc.next()。charAt(0);

0: ABCDE 1: ACX 2: ACV 3: acvff 4: acdcdvc acvfd