2016-04-12 103 views
-1

好的基本上,我對ArrayList有點新了,我必須用它來製作一個程序來獲取一些患者ID,然後使用對象和循環在屏幕上顯示它。我製作了程序,但是我的循環沒有執行。 這是我的計劃:For循環對ArrayList不起作用

import java.util.*; 
import java.util.ArrayList; 
import java.util.Scanner; 

public class patient$ { 
    public static void main(String[] args) { 
     ArrayList<patientss> patient1 = new ArrayList<patientss>(); 
     Scanner src = new Scanner(System.in); 
     int id, i, num; 
     String name; 
     int ages; 
     System.out.println(" j"); 
     for (i = 0; i < patient1.size(); i++) { 
      patientss xx = new patientss(); 
      System.out.println("Enter the patient's ID "); 
      id = src.nextInt(); 
      xx.setId(id); 
      patient1.add(xx); 
     } 
     patientss tt = new patientss(); 
     for (i = 0; i < patient1.size(); i++) { 
      tt = patient1.get(i); 
      System.out.println(tt.getId()); 
     } 
    } 
} 

,這是我patientss類:

package samplee.java; 
public class patientss { 
    int id; 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 
} 
+2

我很確定它*是*「正在執行」,雖然它可能不會如你所願。既然你沒有詳細說明它是如何工作的或者你希望如何工作的,那麼不能說比這更多的東西。 –

+1

哪個循環未執行? println(「j」)之後的那個?是否有理由期望它執行?如果用println(patientss.size())替換println(「j」),會發生什麼情況? – KevinO

+2

回答

1

你環路上的一個空的ArrayList運行,所以size()方法將返回0嘗試改變size()方法第一個用於循環,但要添加多個patientss

+0

好吧,我試過了,它的工作..所以我想問題是,我的arraylist是空的。釷什麼是我應該寫的聲明,以便在這種情況下,我的arraylist上有什麼呢? :/對不起,我剛剛開始arraylist,所以它有點讓我困惑。 –

+0

因此,初始化ArrayList時,它不具有初始大小(除非用元素初始化它)。因此,由於它不像普通數組(它具有不會改變的定義長度),而是具有不同數量的元素,所以'size()'方法返回ArrayList中實際有多少元素,而不是「大小「。 –

1

您的第一個循環遍歷空的ArrayList。

由於此循環的起點似乎是添加到該列表中,迭代的次數應該由您想添加多少東西來控制,而不是已經有多少東西。例如,循環可以繼續,只要patient1.size()<N,其中N是要添加的項目的數量。

0

這裏有一個解決方案。用我的代碼替換第一個循環。

Boolean leave = false; 
while (!leave) { 
    patientss xx = new patientss(); 
    System.out.println("Enter the patient's ID "); 
    System.out.println("-1 to finish entering"); 
    id = src.nextInt(); 
    if (id != -1) { 
     xx.setId(id); 
     patient1.add(xx); 
    } else { leave = true; } //Escape the while loop. 
}