while循环不会读取文件,或打印出行java

时间:2014-10-29 18:33:26

标签: java class constructor while-loop

我的代码中有 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。

4 个答案:

答案 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资源以避免泄漏。