Java中从.txt文件输入数据的问题

写了一个测试类,具体是录入一个班学生的信息,班上有研究生和本科生。测试结果如图示。其中我每次运行时,不用那么麻烦每次都从键盘输入这些数据。我想把这些数据从txt文件中读入。
其中原先的从键盘一个个读入的方法是:
package test;
import java.util.Scanner;
public class TestClass {
public static void main(String[] args){
//Student[] students;
Undergraduate[] students1;
Postgraduate[] students2;
int num1=2;
int num2=1;
int total=num1+num2;
Class oneClass=new Class("电子",40,total,num1,num2);

students1=new Undergraduate[num1];
students2=new Postgraduate[num2];
for(int i=0;i<num1;i++){
students1[i]=new Undergraduate(inputUndergraduate(i+1));
}
for(int i=0;i<num2;i++){
students2[i]=new Postgraduate(inputPostgraduate(i+1));
}
oneClass.setNum1(num1);
oneClass.setStudents1(students1);
System.out.println(oneClass.toString1());
oneClass.setNum2(num2);
oneClass.setStudents2(students2);
System.out.println(oneClass.toString2());
System.out.println(oneClass.toString());

}
public static Undergraduate inputUndergraduate(int i){
Scanner input=new Scanner(System.in);
Undergraduate studenti;
System.out.println("输入第" + i + "本科生的信息:");
System.out.print("学号:");
String id=input.next();
System.out.print("姓名:");
String name=input.next();
System.out.print("语文成绩:");
double chineses=input.nextDouble();
System.out.print("数学成绩:");
double math=input.nextDouble();
System.out.print("英语成绩:");
double english=input.nextDouble();
System.out.print("Java成绩:");
double java=input.nextDouble();
System.out.print("Linux成绩:");
double linux=input.nextDouble();
studenti = new Undergraduate(id,name,new Course1("语文",chineses),new Course1("数学",math),
new Course1("英语",english),new Course1("Java",java),new Course1("Linux",linux));
return studenti;
}
......
}

而本想用Scanner读取的。
java.io.File file =new java.io.File("**.txt");
Scanner input=new Scanner(file);
while(input.hasNext()){
....
}
比如**.txt文件中的内容是这样的:
"1" " 3213 " 90 100 60 70 80
"2" "eqweq" 90 98 82 70 60
....
但问题就是.hasNext()是如果数据中还有可读数据就返回true。而我前面创建了student1[i]对象,如何才能实现对应的student1[0] "1" " 3213 " 90 100 60 70 80

给你我写的两个方法!!作为参考吧!
/**
* @author CaoShun
* @see 从指定位置文件中一行一行读取内容并把每行存入List集合
*
*/
public static List readInputByRow(String path) {
List list=new ArrayList(); File file=new File(path);
try { FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader reader = new BufferedReader(isr);
String tempstring="";
while((tempstring=reader.readLine())!=null) {
list.add(tempstring);
//System.out.println("debug in ReadWriteOEMInfo.java on line 99 tempstring : "+tempstring);
}
reader.close();
isr.close();
fis.close();
return list;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}

/**
* @author CaoShun
* @see 从指定位置文件中,读指定一行数据
* */
public static String readInputByRow(String path,int num) {
File file=new File(path);
try { FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader reader = new BufferedReader(isr);
String tempstring=""; int line=1;
while((tempstring=reader.readLine())!=null) { if(line==num){ break;
}
line++;
}
reader.close();
isr.close();
fis.close();
return tempstring;
} catch (IOException e) {
e.printStackTrace(); return null;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-23
Undergraduate studenti;
System.out.println("输入第" + i + "本科生的信息:"); //这里+i+改为+i+1+不就可以了么
第2个回答  2012-04-22
留个言 有时间看看
相似回答