计算字符串中的数字出现次数

时间:2013-12-18 00:22:30

标签: java

我有一个实验室,它涉及计算字符串中的数字位数和数字字母。我实际上有从我的java书中计算字母的方法,所以我仍然不太确定它是如何工作的,但是当我试图重新创建该方法但是对于实验室的数字部分时,输出是错误的。如果有人能指出我正确的方向,我会非常感激。

正确的输出应为:

1-800-鲜花

e出现1次

f出现1次

l出现1次

o出现1次

r出现1次

出现1次

w出现1次

0出现2次

1出现1次

8出现1次

建立成功(总时间:6秒)

我得到的输出是: 输入字符串:

1-800-鲜花

e出现1次

f出现1次

l出现1次

o出现1次

r出现1次

出现1次

w出现1次

0出现1次

1出现1次

2出现1次

3出现1次

4出现0次

5出现0次

6出现0次

7出现0次

8出现0次

9出现0次

建立成功(总时间:6秒)         公共课Lab12 {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    String s = new String("");
    System.out.println("Enter a string: ");
    s = input.nextLine();
    int[] counts = countletters(s.toLowerCase());
    for (int i =0; i < counts.length; i++){
        if (counts[i] != 0){
            System.out.println((char)('a' + i) + " appears " + counts[i] + ((counts[i] == 1? " time": " times")));
        }
    }
    System.out.println("");
    int[] counts2 = countDigits(s);
    for (int i = 0; i <counts2.length; i++){

        System.out.println(i + " appears " + counts2[i] + " times " );

    }


}
public static int[] countDigits(String s){
    int[] counts = new int[10];
    for (int i = 0; i <s.length(); i++){
        if (Character.isDigit(s.charAt(i))){
            counts[(int)s.charAt(i - '0')]++;
        }
    }
    return counts;
}
public static int[] countletters(String s){

    int[] counts = new int[26];

       for(int i = 0; i < s.length(); i++){

           if (Character.isLetter(s.charAt(i))){
               counts[(s.charAt(i) - 'a')]++;
           }

    }
    return counts;

3 个答案:

答案 0 :(得分:2)

问题出在这一行:

counts[i]++;

应该是:

counts[(int)s.charAt(i) - '0']++;

答案 1 :(得分:1)

您可以“以这种方式计算字符串中的数字出现次数”

string[] digits = Regex.Split(input, @"\D+");
int i = digits.length;

编辑:问题首先用C#标记!!

这是java等价物:

String Input = "Count the 15 number of 454 digits 12";
String[] s = Input.split("\\D+");
System.out.println(s.length-1);

答案 2 :(得分:1)

问题出在这一行:

counts[i]++;

应该是:

int offset = (int)'0';
counts[(int)s.charAt(i) - offset]++;

因为您应该为找到的数字递增计数器,而不是字符串中的位置。