2016-04-12 73 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. 
}