我有三個小的java類,我試圖從文件中讀取一些數據並將其打印出來。這是我的代碼,它們很短。爲什麼我的學生字符串不打印出來?
Student.java
package students;
import java.text.*;
public class Student{
private String name;
private int age;
private double gpa;
public Student(String name, int age, double gpa){
this.name = name;
this.age = age;
this.gpa = gpa;
}
public String toString(){
String gpa_string = new DecimalFormat("#.##").format(gpa);
return name + " " + Integer.toString(age) + " " + gpa_string + "\n";
}
}
Students.java
package students;
import java.util.*;
import java.io.*;
public class Students {
public static final int MAX = 100;
private Student students[];
private int count;
public void readFile(String path) throws IOException{
students = new Student[MAX];
Scanner x = new Scanner(new File(path));
count = 0;
while (x.hasNextLine() && count < MAX){
String name = x.nextLine();
if("".equals(name)){
System.out.println("Breaking out of loop");
break;
}
System.out.println(name);
int age = x.nextInt();
System.out.println(age);
double gpa = x.nextDouble();
System.out.println(gpa);
students[count] = new Student(name, age, gpa);
count += 1;
System.out.println(count)
}
x.close();
}
public String toString(){
String result = "";
for(int i = 0; i < count; ++i)
result += students[i].toString();
return result;
}
Driver.java
package students;
import java.io.*;
public class Driver {
public static void main(String[] args) throws IOException{
Students students = new Students();
students.readFile("Students.txt");
System.out.print(students.toString());
}
}
,這是什麼Students.txt樣子:
Name0
22
1.2
Name1
22
2.71
Name2
19
3.51
我期待看到這樣的: NAME0 22 1.2 名稱1 22 2.71 名2 19 3.51
而是我得到任何輸出。我不確定發生了什麼事。該文件沒有找到?我來自python,看起來像try: ... except: pass
事情正在與throws IOException
東西進行。
我使用Eclipse,我有Students.txt src文件夾,bin文件夾,並在工作區的頂部,因爲我不知道它在哪裏需要去。
編輯:
後改變while循環的條件,並加入一些打印語句,我得到了它的讀取一個學生的輸出現在是: NAME0 1.2 打破循環 Name0 22 1.20
我不明白爲什麼它停止1循環後。
你調試了你的代碼嗎?我的意思是,你是否試圖打印出一些關於閱讀文件的數據?就像每個循環都打印出一個'循環'信息或其他東西。 –
@newboyhun好主意! :3將更新我的問題 – Broseph
@Broseph回覆:您的更新,請參閱我的更新回答 – drewmoore