我从以前的建议中更新了我的代码,它只是阅读我的句子中的第一个单词,有关如何阅读整个句子的任何建议吗? (我必须使用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
答案 0 :(得分: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!"
答案 1 :(得分:1)
您的扫描仪只读取下一个字(in.next()
)。如果您想阅读整行,则应使用nextLine
的方法Scanner
。
如果您希望用户输入多个值,则必须从该扫描仪中进行相应的读取(因此您还必须从询问用户的第一个问题的答案中读取换行符。)
我不会给你代码来修复这个问题,这只是一个指向正确方向的指针。如果您熟悉这些标准类,那将是非常好的。 Sun / Oracle在文档方面做得非常好。因此,第一眼看起来应始终位于您正在使用的类的Java Doc中。
以下是课程Scanner的文档。