我的代码中有 hentAntall 方法。它应该在txt文件中找到搜索词。我没有任何错误。它只是不会打印出两条可能的行。
此方法必须首先访问构造函数以获取搜索词,然后必须在txt文件中找到该搜索词并添加到count。构造函数从另一个类获取搜索词。喜欢这个 new lolz(“searchword”)。hentAntall();
(我为这个程序中的愚蠢命名道歉,但它只是我的一个程序的副本,而我只是想在不搞砸原文的情况下纠正它。)
import java.io.File;
import java.util.Scanner;
public class lolz {
private String sokeord=null;
private int antall = 0;
// Constructor
lolz(String searchword) throws Exception{
this.sokeord = searchword;
}
//toString method, to print in the same format.
@Override
public String toString(){
return "\nSokeordet er: " + sokeord+ "\n";
}
// Gets the ammount of the searchword
public int hentAntall() throws Exception{
File file = new File("Hvorfor.txt");
Scanner readfile = new Scanner(file);
while (readfile.hasNextLine()){
String nextline = readfile.nextLine();
if (nextline.equalsIgnoreCase(sokeord)) {
antall ++;
System.out.println("Antallet av:" + sokeord + "er " + antall);
}
else {System.out.println("Error no such search word in the given text");}
}
return antall;
}
// void methode to increase the count of a searcheword.
void oekAntall() {
antall++;
}
}
这是调用此方法的另一个类,并且还向构造函数提供信息。
public class Main {
public static void main(String[] args) throws Exception {
new lolz("fungerer").hentAntall();
}}
还尝试了一些建议并且它们无法正常工作,我只得到一条消息,处理完毕,退出代码为0。
答案 0 :(得分:0)
而不是:
readfile.equals(sokeord)
将Scanner
类型的实例与String
(永远不会是true
)进行比较。你需要阅读一行并进行比较。
String line = readfile.nextLine();
if(line.equals(sokeord)){
答案 1 :(得分:0)
为您的班级添加一个主要方法:
public static void main(String[] args)
{
hentAntall();
}
你必须使hentAntall()静态或创建一个lolz类的实例并以这种方式调用它。
同样改变:
while (readfile.hasNext()){
if (readfile.nextLine().contains(sokeord)) {
您需要实际读取输入,然后检查行中是否存在sokeord。
答案 2 :(得分:0)
你的问题:
您正在尝试将Scanner变量与字符串变量进行比较?!!!
解释:
您尝试比较扫描仪的内容
java.util.Scanner中[定界符= \ p {javaWhitespace} +] [位置= 0] [匹配 valid = true] [need input = false] [来源 closed = false] [skipped = false] [group separator = \,] [decimal separator =。] [positive prefix =] [negative prefix = \ Q- \ E] [positive suffix =] [negative suffix =] [NaN string = \Q \ E] [infinity string = \Q∞\ E]
包含String变量的内容。
您没有阅读以下
的每一行if (readfile.equals(sokeord)) {
你应该
if (readfile.nextLine().equals(sokeord)) {
答案 3 :(得分:0)
你的hentAntall方法应该是这样的:
public int hentAntall() throws Exception {
File file = new File("Hvorfor.txt");
Scanner readfile = new Scanner(file);
while (readfile.hasNextLine()) {
String word = readfile.next();
if (word.contains(sokeord)) {
antall++;
System.out.println("Antallet av:" + sokeord + "er " + antall);
} else {
System.out
.println("Error no such search word in the given text: ");
}
}
readfile.close();
return antall;
}
请勿忘记关闭Scanner资源以避免泄漏。