【问题标题】:Input characters in array one by one java数组中的字符一一输入java
【发布时间】:2018-04-30 04:52:39
【问题描述】:

我正在尝试获取用户输入并将其放入字符数组中,然后将其打印出来....程序简单没有...... 我收到错误“数组索引超出范围”。我试过改变数组的长度,但还是不行。

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);

    }

谢谢

【问题讨论】:

  • char[] ToEdit = new char []; 无法编译,因此您无法运行代码,也不会出现异常。一旦你在new char[1234] 中传递了一个长度,那么你可以改变循环的上限以反映数组的长度:for (int i=0; i&lt;ToEdit.length; i++)

标签: java arrays for-loop character


【解决方案1】:

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

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

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

附带说明,建议您将数字5 提取为变量。这将允许您通过仅更改一个位置来增加或减少程序可以处理的字符数量。

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

【讨论】:

  • 我试过了。在我无法输入任何值之前。这样,它只会让我输入一个然后失败。
  • 感谢您的推荐,我会查看列表
【解决方案2】:

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

0: abcde 1: acx 2: acv 3: acvff 4: cdcdvc acvfd

【讨论】:

    猜你喜欢
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 2019-12-31
    • 2012-08-27
    • 2023-03-18
    • 2014-10-14
    相关资源
    最近更新 更多