标识符错误?

时间:2013-12-10 04:01:54

标签: java

我试图计算“Lenore”在诗中的次数以及总字数。我在第13行收到错误,请帮忙。我很新,似乎无法掌握如何正确订购代码。

package theraven;

import java.io.*;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;

public class lenore {

    Scanner myscanner = new Scanner("/Users/karaleamann/Desktop/theraven.txt");

    public int countWord(String Lenore, File"/Users/karaleamann/Desktop/theraven.txt") {
        int count = 0;
        while (myscanner.hasNextLine()) {

            String nextToken = myscanner.next();

            if (nextToken.equalsIgnoreCase(Lenore))
                count++;
        }
        return count;
    }

    public int countAll() {
        File file = new File("/Users/karaleamann/Desktop/theraven.txt");
        Scanner sc = null;
        try {
            sc = new Scanner(new FileInputStream(file));

        } catch (FileNotFoundException ex) {

            Logger.getLogger(lenore.class.getName()).log(Level.SEVERE, null, ex);
        }

        int count = 0;
        while (sc.hasNext()) {
            sc.next();
            count++;
        }
        System.out.println("Number of words: " + count);
        return 0;

    }

}

2 个答案:

答案 0 :(得分:2)

首先,您没有Main方法,这是执行类所需的方法。其次,你以无效的方式定义方法countWord。

将您的类名更改为Lenore camelCase模式,类名应具有大写首字母的名称

public int countWord(String Lenore, File "/Users/karaleamann/Desktop/theraven.txt") 

你做不到。你必须传递参数

it would be something like:

public int countWord(String lenore, File file){
                            //^ variables name should be 
                            //      in camelCase
                                        //^you pass a File variable 
                                        //   to the method.

但是,由于您在课程中定义扫描仪,您不需要将文件传递给此方法,您需要更改扫描仪的定义,如下所示:

new Scanner(new File("/Users/karaleamann/Desktop/theraven.txt"));

然后您的方法countWord应为countWord(String lenora)

你有两种方法什么都不做。一个是使用扫描仪,但从未调用过。而另一个你根本找不到任何东西。

您的countAll方法是最接近解决方案的方法,所以请坚持下去。

您应该更改此部分

 while(sc.hasNext()){
     String lineText = sc.next();
     if ( lineText.indexOf("Lenora")>-1 ){
      count++;   
     }
 }

然后创建一个启动程序的主方法

public static void main(String [] args){
     Lenore l = new Lenore();
     l.countAll();
}

当然,这不是理想的代码。您必须将其演变为更合理的代码。分离任务,仅在需要时创建资源。但它现在应该有效。

答案 1 :(得分:0)

你不能用Java做到这一点:

public int countWord(String Lenore, File "/Users/karaleamann/Desktop/theraven.txt")

我相信你的意思是:

public int countWord(String Lenore, File theFile)

调用方法时,必须提供参数theFile的实际值,而不是在参数声明期间,它不会那样工作。