【问题标题】:Error in counting character(s) entered by user using Java计算用户使用 Java 输入的字符时出错
【发布时间】:2013-03-07 06:26:36
【问题描述】:

我应该创建一个程序来计算特定类型字符的数量 由用户输入。大写字母、小写字母、数字的个数 (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。

【问题讨论】:

  • 你可以尝试在你的 if 语句中添加 print 语句和你的 low++ 来确认它进入语句的次数:)
  • 家庭作业问题?应该被标记。
  • @EvanKnowles Home Work 标签已过时 -> stackoverflow.com/tags/homework/info

标签: java count character


【解决方案1】:

你打过电话

input.next()

第一次计数时会加倍,所以第一个字符会被丢弃,从而使您的计数变差。

【讨论】:

    【解决方案2】:

    这样改

    while(sym != '#')
        {
    
        if (sym >= 'a' && sym <= 'z')
            {
            low++;
            }
    
        System.out.print("Enter a character # to quit: ");
        sym = input.next().charAt(0);
    
        }
    

    【讨论】:

      【解决方案3】:

      不要使用两次 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++;
              }
      
      
          } 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-01
        • 2015-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-08
        • 1970-01-01
        相关资源
        最近更新 更多