Java 试着用ArrayLsit接住不起作用

Java 试着用ArrayLsit接住不起作用,java,arraylist,try-catch,Java,Arraylist,Try Catch,下面是我的程序流程的一个示例: Enter an issuer ID# (6 digits): 12345 java.io.IOException: Invalid issuer ID Enter an issuer ID# (6 digits): 987 java.io.IOException: Invalid issuer ID Enter an issuer ID# (6 digits): 555 java.io.IOException: Invalid issuer ID E

下面是我的程序流程的一个示例:

Enter an issuer ID# (6 digits): 12345

java.io.IOException: Invalid issuer ID

Enter an issuer ID# (6 digits): 987

java.io.IOException: Invalid issuer ID

Enter an issuer ID# (6 digits): 555

java.io.IOException: Invalid issuer ID

Enter an issuer ID# (6 digits): 456456
这是我的代码:

public static ArrayList<HW6Re_doHW4> getarray() throws IOException
{
    int size;
    ArrayList<HW6Re_doHW4> card;
    String id;
    HW6Re_doHW4 temp = new HW6Re_doHW4();
    boolean j = false;

    System.out.printf("Enter the number of elements in the array: ");
    size = scanner.nextInt();
    if(size < 1)
    {
        size = 1;
    }
    card = new ArrayList<HW6Re_doHW4>(size);
    while(j == false)
    {
        try
        {
            System.out.printf("Enter an issuer ID# (6 digits): ");
            id = scanner.next();
            for(int i = 0; i < card.size(); i++)
            {                   
                temp.createcard(id);                
                card.add(temp);
            }
            j = true;
        }
        catch(IOException e)
        {
            System.out.println(e);
            j = false;
        }
    }

    return card;
}
publicstaticarraylistgetarray()引发IOException
{
整数大小;
ArrayList卡;
字符串id;
HW6Re_-doHW4温度=新的HW6Re_-doHW4();
布尔j=假;
System.out.printf(“输入数组中的元素数:”);
大小=scanner.nextInt();
如果(尺寸<1)
{
尺寸=1;
}
卡片=新阵列列表(大小);
while(j==false)
{
尝试
{
System.out.printf(“输入发卡机构ID(6位):”;
id=scanner.next();
对于(int i=0;i
ID应该再次询问,但我的输出停止了。我不知道我错在哪里

输入数组中的元素数:0


输入发卡机构ID#(6位):12345

您认为会发生什么

你有:

while(j==false) {
    System.out.printf("Enter an issuer ID# (6 digits): ");
    id = scanner.next();
    for(int i = 0; i < card.size(); i++)
        {                   
            temp.createcard(id);                
            card.add(temp);
        }
    j = true;
}
while(j==false){
System.out.printf(“输入发卡机构ID(6位):”;
id=scanner.next();
对于(int i=0;i
所以,只要你要求一个ID并接受它,你就将j设置为true。这会停止一切,因为
while
循环的条件是j必须为false


只要去掉
j=true

您似乎合并了两个循环,只需要从
0
size
的一个循环。差不多

for(int i = 0; i < size; i++) { // <-- card.size() starts at 0.
  try {
    System.out.printf("Enter an issuer ID# (6 digits): ");
    id = scanner.next();
    // temp.createcard(id); // <-- probably not.                
    card.add(new HW6Re_doHW4(id)); // <-- something like.
  } catch (IOException e) {
    e.printStackTrace();
    i--;
  }
}
for(inti=0;i