gpt4 book ai didi

java - 查找字符串中每个数字出现的次数

转载 作者:行者123 更新时间:2023-12-01 07:16:00 25 4
gpt4 key购买 nike

仅供引用。我坚持的另一个练习。问题是找出字符串中每个数字出现的次数。我觉得我已经很接近了,但我得到了一些奇怪的结果。我是初学者,所以如果可能的话,请在我的水平上保留提示/帮助。谢谢!

这是我到目前为止所拥有的:

import java.util.Scanner;

public class Practice5 {
public static void main(String[] args) {
Scanner input= new Scanner(System.in);
System.out.println("Enter a string");
String s = input.next();

int[] counts = countNumbers(s);

String output = "";

for (int i = 0; i < counts.length; i++) {
if (counts[i] != 0)
{
output += "Digit" + (char)('0' + i) + " appears " +
counts[i] + ((counts[i] == 1) + " times\n");
}

}

System.out.print(output);
}


private static int[] countNumbers(String s) {
int[] counts = new int[10];

for(int i = 0; i < s.length(); i++) {
if (Character.isDigit(s.charAt(i)));
counts[s.charAt(i) - '0']++;
}
return counts;
}
}

好的。现在,如果我输入类似“23 t5t6 u76u 232 g1”的字符串

我得到:

2 appears 1 time
3 appears 1 time

这显然是不正确的。应该是 2 出现 3 次,3 出现 2 次,5 出现 1 次,等等。如有任何帮助,我们将不胜感激。

最佳答案

您的第一个问题是 Java 扫描器的使用。如果我没记错的话,您只是读取第一个子字符串直到第一个空格。您可能想要遍历整个字符串,因此扫描仪不适合使用。

一旦你得到了整个字符串,你仍然有一个问题。代码中的主要问题是在读取

的行中
if (Character.isDigit(s.charAt(i)));

最后有一个分号。因此,始终会执行下一行(更新值的位置)。这是一个问题,因为有时您的字符不是数字,因此索引“character-'0'”可能会超出您定义的 10。 Java 应该捕获此异常以创建异常。您没有看到此异常,因为您的代码只会处理第一个“23”

关于java - 查找字符串中每个数字出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2226333/

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