【问题标题】:Count the occurences of a letter in a string [duplicate]计算字符串中字母的出现次数[重复]
【发布时间】:2013-11-04 02:29:45
【问题描述】:

我根据之前的建议更新了我的代码,它只读取我句子中的第一个单词,关于如何让它阅读整个句子的任何建议? (我必须使用 for 循环)

import java.util.Scanner;

public class CountCharacters {
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    char letter;
    String sentence = "";
    System.out.println("Enter a character for which to search");
    letter = in.next().charAt(0);
    System.out.println("Enter the string to search");
    sentence = in.next();

    int count = 0;
    for (int i = 0; i < sentence.length(); i++) {
        char ch = sentence.charAt(i);
        if (ch == letter) {
            count ++;
        }
    }
    System.out.printf("There are %d occurrences of %s in %s", count,
            letter, sentence);

}
}

输出: 输入要搜索的字符 H 输入要搜索的字符串 你好吗 hello 中出现了 1 次 h

【问题讨论】:

  • 至少试试你的作业或谷歌吧!
  • 尝试使用in.nextLine() 而不是in.next()
  • 我试过了,就是那个代码
  • 你在一小时前就已经问过这个问题了..stackoverflow.com/questions/19580911/…
  • 谢谢@MadProgrammer

标签: java for-loop


【解决方案1】:

这里有点棘手。您将需要 两个 readLines()

System.out.println("Enter a character for which to search");
letter = in.nextLine().charAt(0);
System.out.println("Enter the string to search");
sentence = in.nextLine();

Scanner.next() 只读一个字并没有读完这一行

// Assume input: "foo" [enter] "test this yourself!"
Scanner.next(); // "foo"
Scanner.nextLine(); // EMPTY STRING!
Scanner.nextLine(); // "test this yourself!"

【讨论】:

    【解决方案2】:

    您的扫描仪只会读取下一个单词 (in.next())。如果你想读一整行,你应该使用Scanner的方法nextLine

    如果您希望用户输入多个值,则必须从该扫描仪中相应地读取(因此您还必须从向用户询问的第一个问题的答案中读取换行符)。

    我不会给你代码来解决这个问题,这只是作为一个正确方向的指针。如果您熟悉这些标准类,那就太好了。 Sun/Oracle 在文档方面做得非常好。所以第一眼应该总是在你正在使用的类的 Java Doc 中。

    这是Scanner 类的文档。

    【讨论】:

    • 警告next()之后如果不吃换行符会出现空行。
    • 不想破坏任何代码,但你是对的,该警告是适当的。已添加
    猜你喜欢
    • 2021-08-04
    • 2012-05-31
    • 1970-01-01
    • 2011-03-02
    • 2019-04-05
    • 2016-01-23
    • 1970-01-01
    相关资源
    最近更新 更多