2013-10-25 169 views
3

我正在尝试在Java中编写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); 

} 
} 
+0

由于你的代码不会编译,你怎么知道它不起作用?它不,但你真的尝试过吗?如果你有,然后解释什么是问题(除了重复的声明)。 –

回答

0

您的if (sentence.length() <= 0) {是不正确的。改变你的条件,如:

System.out.println("Enter a character for which to search"); 
letter = in.next(); 
System.out.println("Enter the string to search"); 
sentence = in.next(); 
char searchLet=letter.charAt(0); // Convert String to char 
int letter = 0; 
for (int i = 0; i < sentence.length(); i++) { 
    char ch = sentence.charAt(i); 
    if (searchLet== ch) { // Check the occurrence of desired letter. 
     letter++; 
    } 
} 

System.out.print(sentence.charAt(letter)); 
0

试试这个:

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.print(letter+" occurance:"+count); 
+0

你不能申请in.next();与char。 – Masudul

+0

ops!修复.. – Nizam

0

试试这个

忘记String letter = "" < - 删除
忘记letter = in.next() < - 删除

// There's no nextChar() method, so this is a work aroung 
    char ch = in.findWithinHorizon(".", 0).charAt(0); 

    int letter = 0; 
    for (int i = 0; i < sentence.length(); i++) { 

     if (sentence.charAt(i) == ch) { 
      letter++; 
     } 
    } 

    System.out.println(letter); // print number of times letter appears 

    // You don't want this 
    System.out.print(sentence.charAt(letter)); // Makes no sense 
0
if (sentence.length() <= 0) { 
      letter++; 
} 

程序中的上述部分代码是错误的。除非输入空字符串,否则这将永远不会成立。

基本上这不是正确的逻辑。你将不得不使用直接比较。

1

我看到一些问题。首先你有两个同名的变量。

其次,您的if条件检查的句子长度大于0,而不是检查字符是否相等。

Scanner in = new Scanner(System.in); 

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

int letter = 0; 
for (int i = 0; i < sentence.length(); i++) { 
    char ch = sentence.charAt(i); 
    if (inLetter == ch) { 
     letter++; 
    } 
} 

System.out.print(sentence.charAt(letter)); 

我也强烈建议来验证,而不是仅仅假设你得到了从第一输入1个字符,并在第二句1输入(未在上面的例子一样)。

0

无需循环:

String sentence = "abcabcabcd"; 
    String letter = "b"; 
    int numOfOccurences = sentence.length() - 
          sentence.replaceAll(letter, "").length(); 
    System.out.println("numOfOccurences = "+numOfOccurences); 

OUTPUT:

numOfOccurences = 3 
0
  1. 你需要知道的字符,你想搜索。你可以使用char charToSearch = letter.toCharArray()[0];
  2. 定义一个变量,例如count来计算给定字符串中字母的出现次数。
  3. 循环字符串并比较每个字符,如果char等于要搜索的字符,则计数++;

例子--->

int count = 0; 
char charToSearch = letter.toCharArray()[0]; 
for (int i = 0; i < sentence.length(); i++) { 
    if (sentence.charAt(i) == charToSearch) { 
     count++; 
    } 
} 

System.out.printf("Occurrences of a %s in %s is %d", letter, sentence, count); 
0

希望这对您有所帮助。

import java.util.Scanner; 

public class CountCharacters { 
    public static void main(String[] args) { 

     Scanner in = new Scanner(System.in); 

     System.out.println("Enter the string to search"); 
     String sentence = in.nextLine(); 

     System.out.println("Enter a character for which to search"); 
     String letter = in.next(); 

     int noOfOccurance = 0; 

     for (int i = 0; i < sentence.length(); i++) { 
      char dh=letter.charAt(0); 
      char ch = sentence.charAt(i); 
      if (dh==ch) { 
       noOfOccurance++; 
      } 
     } 
     System.out.print(noOfOccurance); 
    } 
} 

样品输入输出

Enter the string to search 
how are you 
Enter a character for which to search 
o 
No of Occurances : 2 
0

尝试的indexOf()方法。 它应该工作

0

读取输入字符串

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

旧线之前读取字符

letter = in.next().charAt(0); 

再添in.nextLine()后,您的扫描仪类没有移动到下一行但希望这有助于:)

相关问题