gpt4 book ai didi

java - 为什么 Java 在使用 "for"循环将数据存入数组时会出现运行时错误?

转载 作者:行者123 更新时间:2023-11-29 07:52:29 26 4
gpt4 key购买 nike

我想编写代码来读取存储为字符串变量的单词。该程序应遍历单词中的每个字符并更新包含每个字母出现频率的数组。

字母表中的字母(A 到 Z)可以通过“freq[1]”到“freq[26]”来引用。

但是,当我尝试运行我的程序时,我收到一条错误消息:

java.lang.ArrayIndexOutOfBoundsException:-64 在 ReadWords.main(ReadWords.java:17)


这是我使用的代码:

public class ReadWords
{
public static void main (String[] args)
{
String line = "This is a line of text. That's not exciting";
line = line.toLowerCase();
int[] freq = new int[27];

for (int i = 0; i < line.length(); i++)
{
int letter = line.charAt(i) - 96;
freq[letter]++;
}

for (int i = 0; i < freq.length - 1; i++)
{
System.out.println(freq[i]); //prints all elements in the array
}
}
}

最佳答案

因为您正在用字母读取空格字符 (ASCII 32)。它的值为32,减去96,得到-64,显然不是有效的数组索引。

我认为你不想计算空格,所以跳过它们;不要处理它们。

您还需要跳过其他标点符号,' 是 ASCII 值 39,而 . 是 ASCII 值 46。

关于java - 为什么 Java 在使用 "for"循环将数据存入数组时会出现运行时错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20108213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com