在我的java代码中,一个简单的计数算法中有一个逻辑错误

在我的java代码中,一个简单的计数算法中有一个逻辑错误,java,count,Java,Count,因此,在我简单的java计算单词的过程中有一个逻辑错误,首先在cmd中,它要求我键入两次字符串,而它应该显示一次 我在cmd中运行此命令,以下是输出: C:\Users\Me\Documents>java计数 变形 变形 字符串变形中s的出现次数为2 s 2. import java.util.Scanner; 公营班级人数5{ 公共静态void main(字符串[]args){ 扫描仪输入=新扫描仪(System.in); String str=input.nextLine(); char

因此,在我简单的java计算单词的过程中有一个逻辑错误,首先在cmd中,它要求我键入两次字符串,而它应该显示一次

我在cmd中运行此命令,以下是输出:

C:\Users\Me\Documents>java计数
变形
变形
字符串变形中s的出现次数为2
s
2.
import java.util.Scanner;
公营班级人数5{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
String str=input.nextLine();
char key=input.nextLine().charAt(0);
countString(str,key);
}
公共静态void countString(String str,char key){
整数计数=0;
对于(int i=0;i0){
系统输出打印项次(计数);
}
}
}
所以这里有一些让我困惑的事情:

  • 为什么需要3行允许用户输入。我想前一行已经让我输入了。什么是
    char key=input.nextLine().charAt(0)需要,以及前一行?难道不应该只有输入输入行吗


  • 为什么代码中有两个for循环,它们不是做同样的事情吗


  • 尝试此解决方案,该解决方案应要求一次性输入,并遍历为匹配输入的完整输入字符串

    import java.util.Scanner;  
    
    public class stringCompair {
    
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String str = input.nextLine();
        for(int i=0 ; i < str.length();i++) {
            char key = str.charAt(i);
            countString(str, key);
        }
    
    }
    
    public static void countString(String str, char key) {
        int count = 0;
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == key)
                count++;
        }
        System.out.println("Number of Occurrence of "
                + key + " is " + count + " in string " + str);
    }
    }
    
    import java.util.Scanner;
    公共类stringCompair{
    公共静态void main(字符串[]args){
    扫描仪输入=新扫描仪(System.in);
    String str=input.nextLine();
    对于(int i=0;i
    “为什么代码中有2个for循环”,这是您的代码,为什么要问这个问题?1。什么是char key=input.nextLine().charAt(0);需要:获取输入的第一个字符,将其更改为char key=str.charAt(0);2.为什么代码中有两个for循环,它们不是做同样的事情吗。。第一个循环检查字符串中的第一个字母是否匹配,第二个循环打印找到相同次数的匹配项。@VinodSinghBist您能写一个完整的答案,我会接受吗?@javalover请检查下面,让我知道这是否适用于you@VinodSinghBist非常感谢。最后一件事,String str=input.nextLine();就是把输入变成字符串,然后在下一行显示?有没有办法把这两条线合二为一?扫描仪输入和字符串str=input.nextLine():?