在java中获取文本文件的内容?
我有一个简单的问题。 我用java编写了一个方法来获取文本文件的内容在java中获取文本文件的内容?,java,file-io,text-files,Java,File Io,Text Files,我有一个简单的问题。 我用java编写了一个方法来获取文本文件的内容 public static String[] viewSuppliers() { Scanner x = null; try{ x = new Scanner(new File("C:\\Users\\فاطمة\\Downloads\\suppliers.txt")); while(x.hasNext()) { String a = x.
public static String[] viewSuppliers()
{
Scanner x = null;
try{
x = new Scanner(new File("C:\\Users\\فاطمة\\Downloads\\suppliers.txt"));
while(x.hasNext())
{
String a = x.next();
String b = x.next();
String c = x.next();
String d = x.next();
String array[] = {a,b,c,d};
return array;
}
x.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
我在主程序中调用了这个方法,但它只返回文件的一行。我的文本文件的内容如下所示:
PEPSI John London 214222
COLA Sarah France 478800
这是我的主要节目:
String array3[] = {"Supplier Company: ", "Supplier Name: ", "Supplier Address: ",
"Supplier Phone Number: "};
String array4[] = i.viewSuppliers(); // object of class
if(i.viewSuppliers() == null)
System.out.println("No current suppliers.");
else
{
System.out.println("Current Suppliers: ");
for(int u = 0; u < array3.length; u++)
{
System.out.printf(array3[u]);
System.out.println(array4[u]);
}
}
字符串数组3[]={“供应商公司:”、“供应商名称:”、“供应商地址:”,
“供应商电话号码:”};
字符串数组4[]=i.viewSuppliers();//类的对象
如果(i.viewSuppliers()==null)
System.out.println(“无当前供应商”);
其他的
{
System.out.println(“当前供应商:”);
对于(int u=0;u
当我运行主程序并调用该方法时,它只返回第一行,我想返回所有文件。尝试将返回从while循环中取出,否则在第一次迭代后返回 而不是返回由4个字符串组成的数组, 似乎您真正想要的是返回一个由4个字符串组成的数组列表:
public static List<String[]> viewSuppliers()
{
List<String[]> lines = new ArrayList<>();
Scanner x = null;
try{
x = new Scanner(new File("C:\\Users\\فاطمة\\Downloads\\suppliers.txt"));
while(x.hasNext())
{
String a = x.next();
String b = x.next();
String c = x.next();
String d = x.next();
String array[] = {a,b,c,d};
lines.add(array);
}
x.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return lines;
}
公共静态列表视图供应商()
{
列表行=新的ArrayList();
扫描器x=null;
试一试{
x=新扫描仪(新文件(“C:\\Users\\فامة\\Downloads\\suppliers.txt”);
while(x.hasNext())
{
字符串a=x.next();
字符串b=x.next();
字符串c=x.next();
字符串d=x.next();
字符串数组[]={a,b,c,d};
行。添加(数组);
}
x、 close();
}
捕获(例外e)
{
e、 printStackTrace();
}
回流线;
}
然后,对结果进行迭代:
List<String[]> list = i.viewSuppliers(); // object of class
if (list.isEmpty())
System.out.println("No current suppliers.");
else
{
System.out.println("Current Suppliers: ");
for (String[] supplier : list) {
for(int u = 0; u < array3.length; u++)
{
System.out.printf(array3[u]);
System.out.println(supplier[u]);
}
}
}
List List=i.viewSuppliers();//类的对象
if(list.isEmpty())
System.out.println(“无当前供应商”);
其他的
{
System.out.println(“当前供应商:”);
对于(字符串[]供应商:列表){
对于(int u=0;u
循环中的输出基于阵列3的长度,而不是阵列4,因此由于阵列3的长度,它将始终只打印第一个供应商
System.out.println("Current Suppliers: ");
for(int u = 0; u < array3.length; u++)
{
System.out.printf(array3[u]);
System.out.println(array4[u]);
}
System.out.println(“当前供应商:”);
对于(int u=0;u
可能是将System.out.println(array4)添加到一个循环中,该循环的长度低于第一个循环。您在第一次迭代结束时返回数组,这导致它只处理第一个循环。是的,我尝试了这个方法,但问题是数组从while循环中获取参数,当返回到外部时,它向我显示未声明数组。