2013-10-25 383 views
-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 输入要搜索的字符串 你好你怎么样 有1次出现的H你好

+1

Atleast尝试你的功课或谷歌! – Batty

+4

尝试使用'in.nextLine()'而不是'in.next()' – MadProgrammer

+0

我试过了,那就是那个代码是 – user2918429

回答

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

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

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

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

以下是Scanner类的文档。

+0

如果你在'next()之后没有吃掉换行符, 。 –

+0

不想破坏任何代码,但你是对的,该警告是适当的。添加它 – Matthias

相关问题