我试图计算“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;
}
}
答案 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
的实际值,而不是在参数声明期间,它不会那样工作。