【问题标题】:How many times the first character appears in a string第一个字符在字符串中出现多少次
【发布时间】:2013-09-29 18:07:35
【问题描述】:

我想要实现的目标:

编写一个程序,要求用户输入一个字符串。然后输出该字符串的第一个字母出现的次数。假设用户将输入一个全大写字母的字符串。例如,如果用户输入“PETER PIPER PICKED A PECK OF PICKLED PEPPERS”,您的程序应该输出“P 出现 9 次”。

到目前为止我所拥有的:

import javax.swing.JOptionPane;

public class counterCharacter {

  public static void main(String[] args)
  {
    String userInput = JOptionPane.showInputDialog("Input a string");
    int count = userInput.indexOf(0);
    for(int i =0; i < userInput.length(); i++)

        if(userInput.charAt(i) == 'a')  
          count++;
        System.out.println(count);
    }
}

这个代码的问题是它只打印字符'a'并且只有当它出现在索引点0时。我的任务是允许用户输入任何字符串,从用户的索引点0获取字符输入,并准确计算该字符在输入中重复出现的次数。对于 PETER PIPER 示例,系统应该打印出“6”,因为这是索引 0 位置中的字符出现的次数。但是如果用户输入 abcdcbabcdcda,它应该打印出“3”。

对于这方面的任何帮助将不胜感激,因为我是一名新程序员,错过了一天的课程,现在远远落后并试图赶上。如果可以,请解释您为什么使用您使用的特定代码以及我可以用来学习如何使用该特定东西的任何参考资料。谢谢你!

【问题讨论】:

    标签: java string for-loop count user-input


    【解决方案1】:

    首先你要存储第一个字符:

    char firstChar = userInput.charAt(0);
    

    创建一个变量以跟踪您找到的匹配数量:

    int count = 0;
    

    循环遍历字符串并增加计数(如果适用):

    for(int i=0; i<userInput.length(); i++){
      if(userInput.charAt(i) == firstChar){
        count++
      }
     }
    

    编辑:您基本上缺少的只是将第一个字母存储在单独的变量中。

    【讨论】:

    • 感谢您对我编码的帮助。我明白我做错了什么,并开始对字符串及其应用和用途进行更多研究。我非常感谢您的帮助。
    【解决方案2】:

    我不愿意给你工作代码,因为给你交作业没有帮助。 由于您已经知道如何使用 userInput.charAt(n) 检索字符,因此您应该在 for 循环之前使用索引 0 将第一个字符保存为 targetCharacter。您现在可以使用 for 循环检查每个字符是否与该字符相等并计算它们。为了更好的可读性,您应该正确缩进代码并使用大括号,如下所示:

    if(userInput.charAt(i) == 'a') {
      count++;
    }
    

    然后你可以打印出计数 after for 循环(这意味着在 for 循环的花括号之后。如果仍然有任何问题,请更改您原来的问题。

    【讨论】:

      【解决方案3】:

      我会这样尝试:

      import javax.swing.JOptionPane;
      
      public class CounterCharacter {
       public static void main(String[] args) {
          String userInput = JOptionPane.showInputDialog("Input a string");
          // Use charAt to retrieve a character at a specific position
          char firstChar = userInput.charAt(0);
          int count=0;
      
          for(int i =0; i < userInput.length(); i++)
              if(userInput.charAt(i) == firstChar)
            {
               count++;
            }
         System.out.println(count);
       }
      }
      

      【讨论】:

      • 大家好。感谢所有的帮助。我最终浏览了我朋友的笔记并自己尝试了更多,然后意识到我刚刚输入的内容与您的许多脚本几乎相同。特别感谢@Carsten Hoffmann 解释事物并试图帮助我建立知识库的方式。非常感谢你们!
      【解决方案4】:

      public class CountCharacter {

      public static void main(String[] args)
      {
      int count = 1;
      String userInput = JOptionPane.showInputDialog("Input a string");
      char ch = userInput.charAt(0);
      for(int i =1; i < userInput.length(); i++)
      {
          if(userInput.charAt(i) == ch)
      
          count++;
      }
      
      
      System.out.println(count);
      
      }
      
      }
      

      这将为您提供您想要产生的输出......

      【讨论】:

        【解决方案5】:

        你已经很好地描述了这个问题,所以你真的需要把你的描述变成代码。

        现在这可能很困难,因为您似乎不明白为什么您的代码现在正在执行此操作。一旦你理解了它——一行一行——它应该更容易达到你想要的结果。

        我将帮助您了解您现在拥有的东西,您可以将其转化为工作结果:

        String userInput = JOptionPane.showInputDialog("Input a string");
        

        获取要操作的输入字符串。

        int count = userInput.indexOf(0);
        

        此方法使用indexOf(int)。您在问“字符 0 (null character) 的第一次出现(索引)在哪里。这没有帮助,因为您想要的是相反的 - 您希望 第一个字符位于 index 0。这就是 charAt 所做的。String 的文档很有帮助 - 阅读它们。

        不仅如此,您还将此结果分配给count。为什么?

        您需要记住索引 0 处的字符(提示,一个字符,而不是 int),但您还需要开始计数 - 如果您在开始处开始循环,则从 0细绳。所以我认为你需要从两个变量开始。

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

        在 0 处使用 i 开始一个循环,并递增直到字符串的最后一个索引。这听起来对我来说是正确的。

        但是,请注意您没有包含 { 来打开 - 这意味着只有下一条语句(直到下一个分号)将包含在循环中。这并不意味着您的代码已损坏,但如果您在循环中添加更多语句,这很容易在以后变成错误。

            if(userInput.charAt(i) == 'a')
        

        这会检查i 处的字符是否为'a'——为什么?你真正需要的是看它是否匹配第一个字符。

        还要注意 if 块(同样,{ ... })的工作方式与 for 循环相同。最好在每个ifelseforwhile 等上使用它们,直到您真正知道自己在做什么。这样你就不会被意外绊倒。

            count++;
        

        增加计数。如果您的count 是正确的(但不是,请记住),这就是您想要的。

            System.out.println(count);
        

        对我来说看起来不错,除了记住这不在循环块中,但你已经缩进了它。

        【讨论】:

        • 感谢您帮助理解我的代码做错了什么。正如我之前所说,我不知道如何使用字符串,因为我错过了那天的课程......
        • @user2828963 这有帮助吗?
        猜你喜欢
        • 2013-02-11
        • 2017-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-13
        • 1970-01-01
        • 2018-02-05
        • 2014-10-12
        相关资源
        最近更新 更多