创建多个类

时间:2014-12-03 11:52:35

标签: java netbeans

有人可以通过告诉我如何从下面的代码创建其他类来帮助我吗? 我的老师想要的不仅仅是一个课程,但是我在一个课程中完成了所有课程,所以如果可能的话,我需要帮助将它分成多个课程。这是在Netbeans。

package stringfinder;

/**
 *
 * @author Christopher, Martin, Rasmus
 * @version 1.00
 */
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;


public class StringFinder {

    public void run ()
    {
        int count = 0, countBuffer=0;
        //Enter the filepath to your desired text file.
        String filePath = "C:\\Users\\Christopher\\Dropbox\\Skole\\WordDistance\\words.txt";
        BufferedReader br;
        String line = "";
        String inputSearch = "";

        Scanner input = new Scanner(System.in);

        try {
        /**
         * The first line welcomes the user to the application
         * the second one tells the user to enter a keyword
         * @param inputSearch is the keyword the user enters in the console.
         */
            System.out.println("Welcome to Word Distance App");
            System.out.print("Enter a keyword: ");

            inputSearch = input.nextLine();

            inputSearch = inputSearch.toLowerCase();

            br = new BufferedReader(new FileReader(filePath));
            try {
                while((line = br.readLine()) != null)
                {
                    String[] words = line.split(" ");

                    for (String word : words) {
                        if (word.equals(inputSearch)) {
                            count++;
                            countBuffer++;
                          }
                    } 

                    if(countBuffer > 0)
                    {
                        countBuffer = 0;
                    }

                }
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        /**
         * The last two lines shows the how much the entered keyword differs from the actual word in words.txt
         * @param count how many words were found
         * @param inputSearch the previously entered keyword
         */
        System.out.println("Distance 0.  "+"("+count+" word)");
        System.out.println(inputSearch);
    }
}

3 个答案:

答案 0 :(得分:0)

它不仅仅是一个类,而且只是一个功能。编写复杂的函数并不是好的风格,并且即使不是不可能也会重复使用。这也不是面向对象的。

在不知道代码的目的/上下文是什么的情况下,我可以确定三个可能的分裂点:

  • 处理定位和打开文件的逻辑。它应该接受文件名作为参数并返回流。
  • 处理搜索字符串的逻辑。它应该将开放流和字符串作为参数进行搜索并返回现在的count
  • 将这两部分组合在一起的控制器逻辑。它应该获取文件名和字符串以搜索用户输入或 - 更好 - 命令行参数,调用其他两个函数然后打印输出。

将字符串搜索逻辑封装到StringFinder类中并将其他部分移动到Main类可能是一种合理的设计。

作为良好设计的一个非常重要的经验法则,永远不要混合逻辑来定义如何计算某些东西(算法),并详细说明要计算的(参数,用户交互,......)。

答案 1 :(得分:0)

请注意,我对Java一无所知,因为我只能将它与Python进行比较,但OOP是OOP,而且从阅读代码开始,您似乎缺少Java旨在让您做的OOP部分。

如果是我:

我会尝试将带有字符串的Files转换为来自他们自己类的文件Instances / Objects

public class FileClass{

insertYourStringFileCodeHere


}

答案 2 :(得分:-1)

在与StringFinder.java相同的文件夹中创建第二个文件SecondClass.java

在其中添加:

package stringfinder;


public class SecondClass{

// some code
    public void someMethod(){
    }

}

然后在StringFinder.run()

SecondClass obj = new SecondClass();
obj.someMethod();