在Java中扫描文本文件时使用对象

时间:2016-10-06 13:03:29

标签: java java.util.scanner

所以我试图在另一个类的主类中创建一个对象,其中来自main的String输入应该用在一个方法中,该方法计算特定单词或String在文本文件中出现的次数。但是当我试图打印出计数器时,它只是出现在0.

这是主要课程:

Ord forsteOrd = new Ord("Being");
forsteOrd.hentAntall();

以下是我想要达到的方法的课程:

import java.util.Scanner;
import java.io.File;

public class Ord {

private String tekstord;
private int teller = 0;


public Ord(String tekst){
tekst = tekstord;}

public int hentAntall() throws Exception {
Scanner tekstfil = new Scanner(new File("scarlet.txt"));
while(tekstfil.hasNextLine()){
  String ord = tekstfil.nextLine();
  if(ord.equals(tekstord)){
    teller++;
  }
}
return teller;

2 个答案:

答案 0 :(得分:1)

nextLine方法返回所有文件行。如果该行包含exacltly字符串“Being”,则计数器将增加,否则不会。 例如。像“Being”或“BeingBeing”这样的行不会增加反击。

答案 1 :(得分:0)

这就是原因......

private String tekstord;   //by default it has "" in itself,i.e nothing;

public Ord(String tekst){
tekst = tekstord;}

因此,当您的构造函数运行时, tekst 会分配一个存储在 tekstord 中的值,即“”。当您运行<时strong> hentAntall ,

if(ord.equals(tekstord)){
    teller++;                     
  }

出纳员的值永远不会增加,因为 ord 中有一些字符串,而 tekstord 没有任何东西,因为它从未被分配任何东西,所以它们都不相等而且会永远不会平等,你的出纳员的价值永远不会增加。

Solution..?

而不是 tekst = tekstord ,交换变量 tekstord = tekst