gpt4 book ai didi

java - char 数组中出现的次数

转载 作者:行者123 更新时间:2023-12-02 01:47:31 25 4
gpt4 key购买 nike

我有这个问题,线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException:100 在Exercise_12_2.main(Exercise_12_2.java:28)当我试图简单地计算字符数组中字母的出现次数时。我似乎不知道如何解决这个问题。我已经研究了好几个小时了。请帮助我走上正确的道路。

input: a a a b b c !
Expected output:

Counts:
a 3
b 2
c 1

这是我到目前为止的代码。请帮助我。

import java.util.Scanner;

public class Exercise_12_2
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in); // Setup scanner

char[] charArray = new char[100];
int[] counts = new int[26];
char tempinput = '?';

System.out.print("Enter letters (or ! to quit): ");

while (tempinput != '!')
{
tempinput = (input.next()).charAt(0);
charArray[tempinput]++;

for (int c = 'a'; c <= 'z'; c++)
{
for (int k = 0; k <= charArray.length; k++)
{
if (c == charArray[k])
{
counts[c] += 1;
}
}
}
}
}
public static void displayCounts(int[] counts)
{
for (int i = 0; i < counts.length; i++)
{
if ((i + 1) % 10 == 0)
{
System.out.println(counts[i] + " " + (char)(i + 'a'));
}
else
{
System.out.print(counts[i] + " " + (char)(i + 'a') + " ");
}
}
}
}

最佳答案

java.lang.ArrayIndexOutOfBoundsException: 100意味着您要查询只有 100 个元素的数组的第 101 个元素。请记住,java 数组的索引是从 0 开始的。

从中您也许可以看出为什么这条线被破坏了:

for (int k = 0; k <= charArray.length; k++)

charArray.length100 ,所以你会一直运行到 k101 ,这意味着您尝试 charArray[100]它要求 charArray 的第 101 个元素,但是 charArray只有 100 个元素。

如果你切换k <= charArray.lengthk < charArray.length你应该走得更远。

在一个不相关的说明中,counts[c] += 1;行不通的。 int a 的值 char是它的ascii 值。来信a例如 97 ,所以你会远远超出 counts 的末尾大批。这也不考虑大写/小写(具有不同的数值)。

关于java - char 数组中出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53551019/

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