-2

我从以前的建议中更新了我的代码,它只阅读我句子中的第一个单词,关于如何让它阅读整个句子的任何建议?(我必须使用 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 how are you 在 hello 中出现 1 次 h

4

2 回答 2

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!"
于 2013-10-25T05:46:04.353 回答
1

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

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

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

这是Scanner类的文档。

于 2013-10-25T05:46:17.590 回答