计算出现次数

时间:2014-11-25 00:09:26

标签: java

好的,所以我正在为java做家庭作业。这是作业: 编写一个方法,使用以下标头查找字符串中指定字符的出现次数: public static int count(String str,char a)

编写一个测试程序,提示用户输入一个字符串后跟一个字符,并显示该字符串中出现的字符数。

我的代码中的错误是这一行: char a = input.nextChar;它说" nextChar无法解析或不是字段"

这是我的代码:

import java.util.*;

public class CountOccurances {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner (System.in);
        System.out.println("Enter a string: ");
        String str = input.nextLine();

        System.out.println("Enter a character: ");
        char a = input.nextChar;
        int letterCheck = count(str, a);

        System.out.println("The character " + a + "appeared" + letterCheck + "times in" + str);
    }

    public static int count(String str, char a)
    {
        int count = 0;
        for (int i = 0; i < str.length(); i++)
        {
            if (str.charAt(i) == a)
            {
                count++;
            }
        }
        return count;
    }
}

3 个答案:

答案 0 :(得分:4)

char a = input.nextChar;

需要

char a = input.nextChar();

在第一种情况下,您说input有一个名为nextChar的静态变量,这不是您想要的。您试图通过在最后添加input来调用()对象上的方法。

据说即使这样也不行,因为Scanner类首先没有这种方法。你想要做的就是这样的事情

System.out.println("Enter a string: ");             //Prompt for string
String str = input.nextLine();                      //Get the string
System.out.println("Enter a character: ");          //Prompt for char
String userInput = input.nextLine();                //Get the char AS A STRING
int letterCheck = count(str, userInput.charAt(0));  //Call your method with the first 
                                                    //char entered

当用户输入要计数的字符时,您需要使用返回nextLine()的{​​{1}}方法获取该输入。然后,您可以通过将该字符串的第一个char作为第二个参数传递来调用您的方法。

答案 1 :(得分:2)

你可能想说input.nextChar(),因为你试图调用一个方法。但这不会有帮助,因为Scanner没有nextChar()方法。

您可能需要做的是:

String inputLine = input.nextLine();
char a = inputLine.charAt(0);

从用户输入整行,然后将a设置为输入字符串中的第一个字符。 (如果用户在没有输入字符的情况下点击Enter,它也会抛出异常;如果没有字符可以返回,charAt将抛出异常。为了真正安全,你需要类似的东西此:)

char a;
while (true) {
    String inputLine = input.nextLine();
    if (inputLine.length() > 0) {
        a = inputLine.charAt(0);
        break;
    } else {
        System.out.println("Your input string is empty");
    }
}

答案 2 :(得分:2)

char a = input.nextChar;

您正在尝试调用上面一行中的方法,而不是调用方法的方法。方法应该像这样调用:

char a = input.nextChar();

但是Scanner类没有nextChar()方法。因此,您可以使用Scanner.nextLine()读取一行并获取该行的第一个字符,如下所示。

System.out.println("Enter a character:");
char a = input.nextLine().toCharArray()[0];

此处input.nextLine()读取一行,即String

toCharArray()String读取转换为字符数组。例如:

考虑读取字符串为"HAI",它将转换为{'H', 'A', 'I'}

input.nextLine().toCharArray()[0]将获得该字符数组的第一个索引。在示例中,它将是&#39; H&#39;。但是在你的情况下,当你正在阅读字符时,数组只有一个元素。