我正在尝试使用Objects填充ArrayList

时间:2015-02-15 08:11:03

标签: arraylist

我试图用包含整数的对象填充ArrayList并将其转换为对象数组,从那里我可以确定我的对象数组中的最高整数值。但出于某种原因,当我达到可以将值与彼此进行比较的时候,我丢失了一半的ArrayList或对象数组。

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;
public class Exercise11_04
{
   public static void main(String [] args)
   {
       System.out.println("Enter a sequence of integers ending in 0: \n");
       Scanner input = new Scanner(System.in);  
       ArrayList<Integer> intList = new ArrayList<Integer>();

       while(input.nextInt() != 0)
       {
           intList.add(new Integer(input.nextInt()));
       }//end filler loop
       System.out.println(max(intList));
       arrayContents(intList);
   } 

   public static Integer max(ArrayList<Integer> list)
   {
       int maxIntIndex = 0;

       Integer[] integers = new Integer[list.size()];
       integers = list.toArray(integers);
       for(int index = 0; index < integers.length; index++ )
       {
           if(integers[index].getValue() >= integers[maxIntIndex].getValue()  )
           {
               maxIntIndex = index;
           }
       }
       return integers[maxIntIndex];
   }
   class Integer
   {
       private  int integer;

       Integer() {this(0);}
       Integer(int integer) {this.integer = integer;}
       public int getValue() {return this.integer;}
       public String toString()
       {
           return "The max value is: " + getValue();
       }//
}//end 

我尝试使用此方法检查数组的值

public static void arrayContents(ArrayList<Integer> list)
{
    Integer[] integers = new Integer[list.size()];
    integers = list.toArray(integers); 
    for(int index = 0; index < integers.length; index++)
    {
        System.out.println("The index is: " + index + " .The value is: " + integers[index].getValue());
    }
}

1 个答案:

答案 0 :(得分:1)

在第一次循环中每次迭代使用input.nextInt()两次;一次测试值是否为零,并且一次添加到列表中。因此,将一半的值与0进行比较,将另一半的值添加到列表中。

只读一次:

int v;
while ( (v = input.nextInt) != 0)
    intList.add(v);