我将如何相应地编辑我的类以从 main 调用没有参数的方法?例如:g.count(filename) to g.coun



所以在我的主类testPara中,每当我想执行类段落中的方法时,我总是必须在方法的参数中写文件名。例如:g.readFile(file),g.countSentence(file)。我必须做什么才能使方法不需要,并且我可以通过g.count()执行。也许是全局变量?这是我的段落类:

import java.util.*;
import java.util.ArrayList;
import java.io.File;
import java.io.FileNotFoundException;           
import java.util.Scanner;
class paragraph {
 public void readFile(File filename) {
    try {
        Scanner scanner = new Scanner(filename);
        while(scanner.hasNextLine()) {
            String line = scanner.nextLine();
            System.out.println(line);
        }
    } catch (FileNotFoundException e) {
           e.printStackTrace();
           System.exit(0);
       }
 }
public void countSentences(File filename) {
    int sentanceCount = 0;
    String line;
    String delimiters = "?!.";
    try {
    Scanner scanner = new Scanner(filename);
    while(scanner.hasNextLine()) {
        line  = scanner.nextLine();
        for(int i = 0; i < line.length(); i++) {
            if (delimiters.indexOf(line.charAt(i)) != -1) {
                sentanceCount++;
            }
        }
    }
        System.out.println("# of sentances: " + sentanceCount);
    }  catch (FileNotFoundException e) {
        e.printStackTrace();
        System.exit(0);
    }
}

这就是我测试方法的方式

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

public class testPara {
         public static void main(String args[]) {
    paragraph g = new paragraph();
    File file  = new File("story.txt");
    g.readFile(file);
    System.out.println("n");
    g.countSentences(file);
  }
}

仅当您的 Passage 类始终使用同一文件时,这才有意义。然后,您可以向 T段落类添加一个字段private File file;或其他内容,并使用 setter 设置 File 对象一次。这样:

public class Paragraph {
    private File file;
    public void setFile(File file){
        this.file = file;
    }
    ....

。在主要方法中:

Paragraph p = new Paragraph();
p.setFile(new File("whatever.txt"));
p.readFile();
p.countSentences();
....

当然,你必须修改你的readFile()方法(等等),以便它们使用新的"file"类变量。

编辑:或者,正如@4castle建议的那样,您可以使用构造函数来移交 File 实例(如果您的类需要此实例正常工作,这将是正确的方法)。

filename作为类的实例变量Paragraph

class Paragraph {
    private String filename;
    . . .
    // constructor taking the argument for filename
    public Paragraph(String filename) {
        this.filename = filename;
        . . .

并让调用方在从该类构造对象时传递值

Paragraph g = new Paragraph("story.txt");

之后,您的方法不再需要参数,它们可以只从实例变量中获取值。 例如

public void countSentences() {
    Scanner scanner = new Scanner(this.filename);

相关内容

  • 没有找到相关文章

最新更新