2017-04-09 57 views
-2

類文件:存儲和再打印數據/從和類的數組列表

public class Student { 

    public String stu_FName; 
    public String stu_LName; 
    public String stu_ID; 
} 

這是我寫的,從用戶 公共類獲得輸入主{

public static void main(String[] args) { 

     Scanner sc = new Scanner(System.in); 
     System.out.println("Enter value for X"); 
     int x = sc.nextInt(); 
     ArrayList<Student> stuIDArray = new ArrayList<Student>(4); 

     while (x != 0) { 
      Student st = new Student(); 
      System.out.println("Enter First Name"); 
      st.stu_FName = sc.next(); 
      stuIDArray.add(st); 
      System.out.println("Enter value fo1r X"); 
      x = sc.nextInt(); 

     } 
代碼

當我使用上面的代碼存儲值後,打印陣列的大小時,尺寸工作正常,

System.out.println(stuIDArray.size()); 

,但是當我嘗試以下方法來打印出結果,它打印一些代碼類型格式

for (int i=0;i<stuIDArray.size();i++){ 

    System.out.println(stuIDArray.get(i)); 
} 

for (Student a : stuIDArray){ 
    System.out.println(a); 
} 

輸出:

[email protected] 

[email protected] 

[email protected] 

[email protected] 
+0

ArrayList沒有必要顯示[mcve] –

回答

1

您需要指定獲取數據所需的變量名稱。下面的代碼工作正常。

for (int i = 0; i < stuIDArray.size(); i++) { 
    System.out.println(stuIDArray.get(i).stu_FName); 
} 

for (Class1 a : stuIDArray) { 
    System.out.println(a.stu_FName); 
} 
1

這會發生,因爲你的時候試圖打印學生「對象」,它會打印學生對象的字符串表示形式。 你需要做的是覆蓋有適當的性質有點像學生類的toString方法,

@Override 
public String toString() { 
    return "Student [stu_FName=" + stu_FName + ", stu_LName=" + stu_LName 
      + ", stu_ID=" + stu_ID + "]"; 
} 
1

您必須瞭解toString()方法。當您嘗試在對象上使用System.out.println()時,會調用其toString()方法,並且您已獲取的簽名例如[email protected]是這些方法的默認返回值,如解釋here。如果您想要了解每個字段的詳細信息,請覆蓋您的Student類中的toString方法。更多詳情,請查看this answer