2014-11-25 392 views
0

好的,所以我正在为java做一个家庭作业。下面是分配: 编写发现使用下面的头中的字符串指定的字符的出现的次数的方法: 公共静态诠释计数(字符串str,炭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; 
    } 
} 
+0

任何帮助将不胜感激!提前致谢! – Tammy 2014-11-25 00:11:01

+2

[This](http://stackoverflow.com/questions/13942701/take-a-char-input-from-the-scanner)可能很有趣 – Reimeus 2014-11-25 00:14:38

回答

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]将获得该字符数组的第一个索引。在这个例子中,它将是'H'。但在你的情况下,数组只有一个元素,因为你正在阅读字符。

+0

谢谢你SOOOOOOOOOO很多!它现在完美运行! – Tammy 2014-11-25 00:28:02

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()方法返回一个String该输入。然后可以通过传递该字符串的第一个字符作为第二个参数来调用您的方法。

+0

'Scanner'没有'nextChar()'方法。 – ajb 2014-11-25 00:15:45

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"); 
    } 
} 
+1

我不认为'String'有一个方法'getChar()'(从你的第一个代码片段)。另外,你的第二个代码片段显示了你在Scanner对象'input'上使用'getChar()',它也没有这个方法。 – csmckelvey 2014-11-26 19:57:02

+0

糟糕。固定。感谢您指出错误。 – ajb 2014-11-26 21:15:53

+0

你有我的背,我有你的。 – csmckelvey 2014-11-26 21:16:21