有人可以通过告诉我如何从下面的代码创建其他类来帮助我吗? 我的老师想要的不仅仅是一个课程,但是我在一个课程中完成了所有课程,所以如果可能的话,我需要帮助将它分成多个课程。这是在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);
}
}
答案 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();