字符串索引超出范围:1

时间:2018-03-30 17:19:30

标签: java arrays string int

    Scanner user_input = new Scanner( System.in );

    String cipher_input = user_input.nextLine();
    String[] arr_cipher_input = cipher_input.split("");

    int[] arr_ctext = new int[cipher_input.length()];
    for (int i = 0; i < cipher_input.length(); i++) {
        arr_ctext[i] = (int) arr_cipher_input[i].charAt(i);
    }

上面的代码接受一个输入并将其拆分成一个数组(例如&#34;你好&#34;变成[&#34; h&#34;,&#34; e&#34;&#34; l& #34;,&#34; l&#34;,&#34; o&#34;])然后我尝试将字符转换为它们的ascii值,这是它在标题中返回错误的位置。它每次都正确地转换第一个字符,然后在第二个字符处停止,我似乎无法找出原因。阵列长度似乎相同,所以我不确定我做错了什么。我很感激任何帮助。提前谢谢!

1 个答案:

答案 0 :(得分:5)

您正在创建一个字符{} {'a': <__main__.Example object at 0x01556530>, 'b': <__main__.Example object at 0x015564D0>, 'c': <__main__.Example object at 0x01556A50>} [Finished in 0.163s] (s)。但是您正在尝试访问后续角色。没有。将String更改为charAt(i)即可修复。像,

charAt(0)

(更有效率)跳过arr_ctext[i] = (int) arr_cipher_input[i].charAt(0); 并直接访问输入中的字符。像,

split