Java 计算字符串中字母的出现次数

Java 计算字符串中字母的出现次数,java,for-loop,Java,For Loop,我正在尝试用Java编写一个for循环,它将计算字符串中字母的出现次数。用户将输入要计数的字母和要搜索的字符串。这是一个非常基本的代码,我们还没有得到数组或其他很多东西。(我意识到我已经两次声明了这封信,但此时我的大脑已经死了)这是我迄今为止尝试过的,并且遇到了问题,任何帮助都是非常感谢的: 好的,我根据建议更改了代码,但现在它只读取我句子的第一个单词 import java.util.Scanner; public class CountCharacters { public static

我正在尝试用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);

}
}
import java.util.Scanner;
公共类计数字符{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
字符字母;
字符串句子=”;
System.out.println(“输入要搜索的字符”);
字母=in.next().charAt(0);
System.out.println(“输入要搜索的字符串”);
句子=in.next();
整数计数=0;
for(int i=0;i<句子长度();i++){
char ch=句子charAt(i);
if(ch==字母){
计数++;
}
}
System.out.printf(“在%s中出现了%d个%s”,计数,
字母、句子);
}
}
您的
如果(句子长度()请尝试以下操作:

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);
Char字母=”;
字符串句子=”;
System.out.println(“输入要搜索的字符”);
字母=in.next().charAt(0);
System.out.println(“输入要搜索的字符串”);
句子=in.next();
整数计数=0;
for(int i=0;i<句子长度();i++){
char ch=句子charAt(i);
if(ch==字母){
计数++;
}
}
系统输出打印(字母+“发生:”+计数);
试试这个


忘记
String letter=“”
if(句长()我发现了几个问题。首先,您有两个同名变量

第二步,检查
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));
Scanner-in=新的扫描仪(System.in);
char inLetter=“”;
字符串句子=”;
System.out.println(“输入要搜索的字符”);
inlineter=in.next().charAt(0);
System.out.println(“输入要搜索的字符串”);
句子=in.next();
int字母=0;
for(int i=0;i<句子长度();i++){
char ch=句子charAt(i);
如果(入口==ch){
字母++;
}
}
系统输出打印(句子字符(字母));
我还强烈建议验证输入(在上面的示例中没有这样做),而不是假设第一个输入有一个字符,第二个输入有一个句子。

无需循环:

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

numOfOccurences = 3
  • 您需要知道要搜索的字符。您可以使用charToSearch=letter.tocharray()[0];
  • 定义一个变量,例如count,以统计给定字符串中字母的出现次数
  • 循环字符串并比较每个字符,如果字符等于要搜索的字符,则计数++
  • 示例--->

    int count=0;
    chart charToSearch=letter.toCharArray()[0];
    for(int i=0;i<句子长度();i++){
    if(句子.字符(i)=图表搜索){
    计数++;
    }
    }
    System.out.printf(“在%s中出现的%s是%d”,字母、句子、计数);
    
    希望这对您有所帮助

    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);
        }
    }
    
    尝试indexOf()方法。
    它应该可以工作

    您的Scanner类在读取字符后没有移动到下一行

    letter = in.next().charAt(0);
    
    在读取输入字符串之前,在.nextLine()中添加另一个

        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();
    

    旧线程,但希望有帮助:)

    既然您的代码无法编译,您如何知道它不起作用?它不起作用,但您实际尝试过吗?如果有,请解释问题所在(除了重复声明)。您不能使用char在.next();中应用。
    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);
    
    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
    
    letter = in.next().charAt(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();