我的目标:将文件中的每个数据放入一个数组中。然后将该数组传递给main方法,这样我就可以调用我需要的任何数据,并在必要时附加它。
我现在的位置:我创建了文件及其内容并将它们放入数组中。当我尝试从main方法调用并打印数组时,我得到[Ljava.lang.String; @ 6dd4ea6c 这是什么?为什么它不允许我将我的阵列打印到控制台?
帮助?
我的代码:
/**
Add in javadoc comments
*/
//import statements
import java.io.*;
import java.util.Scanner;
import java.util.ArrayList;
public class Try {
public static void main(String[] args){
fileSetUp();
System.out.println(fileSetUp());
}
public static void createFile(){
//create file holding inventory information
try{
PrintWriter outputFile = new PrintWriter("inventory.txt");
outputFile.println("3000.0");
outputFile.println("Lamps 15.3 400");
outputFile.println("Chairs 19.95 250");
outputFile.print("Desks 95.0 300");
int i =0;
outputFile.close();
}
catch(IOException e){
System.out.println("File cannot be created."); //?????
}
}
public static String[] fileSetUp(){
//load the file information
String[] data = new String[10];
try{
File file = new File("inventory.txt");
Scanner inFile = new Scanner(file);
for(int i=0; i<data.length; i++){
data[i] = (inFile.next());
}
inFile.close();
}
catch(FileNotFoundException e){
System.out.println("Cannot find file.");
}
return data;
}
}
答案 0 :(得分:0)
由于您的数据是面向行的,请采取“简单的方法”:
public static String[] getDataFromFile(final String filename)
throws IOException
{
final Path path = Paths.get(filename);
final List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
return lines.toArray(new String[lines.size()]);
}
或者只使用List
代替数组。
至于:
当我尝试从main方法调用并打印数组时,我得到[Ljava.lang.String; @ 6dd4ea6c
这是数组的字符串表示形式。
如果需要元素,请使用数组的Arrays.toString()
。或者,再次使用List
。
答案 1 :(得分:0)
Java中的数组是对象,但它们不会覆盖toString()
方法。因此,当您尝试打印它们时,您将获得toString()
的默认实现,这实际上是对象类型及其hashCode()
的连接。要正确打印,您可以使用Arrays.toString(Object[])
:
public static void main(String[] args){
String[] arr = fileSetUp();
System.out.println(Arrays.toString(arr));
}