Java 如何将变量从使用Scanner的类传递到主类?
如何将读取的txt文件放入主类中Java 如何将变量从使用Scanner的类传递到主类?,java,methods,java.util.scanner,Java,Methods,Java.util.scanner,如何将读取的txt文件放入主类中 //main class public class mainClass { public static void main(String[]args) { load method = new load("Monster"); } } //scanner class public class load { public static void loader(String... aArgs) throws FileNotFoundExce
//main class
public class mainClass {
public static void main(String[]args) {
load method = new load("Monster");
}
}
//scanner class
public class load {
public static void loader(String... aArgs) throws FileNotFoundException {
load parser = new load("resources/monsters/human/humanSerf.txt");
parser.processLineByLine();
log("Done.");
}
public load(String aFileName){
fFile = new File(aFileName);
}
public final void processLineByLine() throws FileNotFoundException {
//Note that FileReader is used, not File, since File is not Closeable
Scanner scanner = new Scanner(new FileReader(fFile));
try {
//first use a Scanner to get each line
while ( scanner.hasNextLine() ){
processLine( scanner.nextLine() );
}
}
finally {
scanner.close();
}
}
public void processLine(String aLine){
//use a second Scanner to parse the content of each line
Scanner scanner = new Scanner(aLine);
scanner.useDelimiter("=");
if ( scanner.hasNext() ){
String name = scanner.next();
String value = scanner.next();
log("Stat is : " + quote(name.trim()) + ", and the value is : " + quote(value.trim()) );
}
else {
log("Empty or invalid line. Unable to process.");
}
}
public final File fFile;
public static void log(Object aObject){
System.out.println(String.valueOf(aObject));
}
public String quote(String aText){
String QUOTE = "'";
return QUOTE + aText + QUOTE;
}
}
如果我想要文件中的文本,我应该从主类调用哪个方法,以及从该方法返回哪些变量。如果有人有一个网站可以帮助我学习scanner(从互联网上获得了这个源代码,并且只从JavaPractices和sun教程中了解它),那就太好了。谢谢,代码是TL;DR 如果要从
load
类的.txt
文件中获取所有数据,则需要在load
中编写一个方法来获取行。类似这样的方法会奏效:
public String[] getFileAsArray() {
ArrayList<String> lines = new ArrayList<String>();
Scanner in = new Scanner(fFile);
while(in.hasNextLine())
lines.add(in.nextLine();
String[] retArr = new String[lines.size()];
return lines.toArray(retArr);
}
public字符串[]getFileAsArray(){
ArrayList行=新的ArrayList();
扫描仪输入=新扫描仪(fFile);
while(在.hasNextLine()中)
line.add(在.nextLine()中);
String[]retArr=新字符串[lines.size()];
返回线。toArray(retArr);
}
首先,您可能希望遵循标准-使用public class MainClass
而不是MainClass
其次,对于您的方法,public
有一个特定的用途。请参阅和。您通常希望仅在必要时将方法标记为public
(用行话来说,这称为封装)
对于您的问题-在Load
类中,您可以将文件中的所有文本附加到字符串
,并在Load
中添加一个public
getter方法,调用该方法时将返回该方法
将此添加到加载的开始处:
public class Load {
private String fileText;
// ... rest of class
并将此getter方法添加到Load
类中。是的,您可以简单地将fileText
标记为public
,但这违背了面向对象编程的目的
最后,将此新方法用于log
。请注意,不需要使用Object
private static void log(String line) {
System.out.println(line);
fileText += aObject;
}
现在,您可以通过调用
方法将读取的文件放入主类中。getFileText()
我尝试了一个数组,但将它卡在了现有的方法中,这个方法应该可以工作
private static void log(String line) {
System.out.println(line);
fileText += aObject;
}