计算用户使用Java输入的字符时出错

时间:2013-03-07 06:26:37

标签: java count character

我应该创建一个计算特定字符类型数量的程序 由用户输入。大写字母,小写字母,数字的数量 (09)和#符号以外的其他字符都会被计算在内。用户输入#退出。

import java.util.Scanner;
public class countchars
{
    public static void main (String args[])
    {
    Scanner input = new Scanner (System.in);

    char sym;
    int up = 0;
    int low = 0;
    int digit = 0;
    int other = 0;

    System.out.print("Enter a character # to quit: ");
    sym = input.next().charAt(0);

    while(sym != '#')
    {
    System.out.print("Enter a character # to quit: ");
    sym = input.next().charAt(0);

    if (sym >= 'a' && sym <= 'z')
        {
        low++;
        }   
    } 

    System.out.printf("Number of lowercase letters: %d\n", low);
    }
}

这就是我到目前为止的小写计数。问题是当我运行程序并输入4个小写字母时,它只计算3个。

3 个答案:

答案 0 :(得分:4)

您已致电

input.next()
第一次计算时,

两次,所以第一个字符被丢弃,将你的计数搞乱一次。

答案 1 :(得分:2)

像这样改变

while(sym != '#')
    {

    if (sym >= 'a' && sym <= 'z')
        {
        low++;
        }

    System.out.print("Enter a character # to quit: ");
    sym = input.next().charAt(0);

    }

答案 2 :(得分:0)

不要使用两次input.next();

使用此

sym = input.next().charAt(0);

    while(sym != '#')
    {
    System.out.print("Enter a character # to quit: ");
    //sym = input.next().charAt(0); removed this line and try

    if (sym >= 'a' && sym <= 'z')
        {
        low++;
        }


    }