2014-10-14 5 views
0

내가 그것을 사용할 때 그래서 내가 지금 항목의 지정된 수 공용 클래스 SetMenu0 {data.put는() 경우 IndexOutOfBoundsException를 throw

private double price; 
private int size; 
private String output; 
private String priceOutput; 

ArrayList orderList = new ArrayList<String>(); 
ArrayList priceList = new ArrayList<Double>(); 

public SetMenu0() 
{ 
    Scanner input = new Scanner(System.in); 
    System.out.print("Enter New Order?(Y)(N): "); 
    String init = input.nextLine(); 

    if(init.equalsIgnoreCase("y")) 
    { 
     System.out.print("Enter Number of Orders: "); 
     size = input.nextInt(); 

     for(int i = 0; i<=size; i++) 
     { 
      i++; 
      System.out.print("Enter Order: "); 
      orderList.add(input.next()); 
      System.out.print("Enter Price: "); 
      priceList.add(input.nextDouble()); 
     } 
    } 
} 

public ArrayList getOrd() 
{ 
    return orderList; 
} 

public ArrayList getPri() 
{ 
    return priceList; 
} 

public int getSize() 
{ 
    return size; 
} 

}

에 대한 입력이 코드를 주문하고 가격이 TreeMap을 사용하면 여기에 indexOutOfBoundsException이 발생합니다. public static void main (String [] args) { // 빈 통합 문서 XSSFWorkbook 통합 문서 = 새 XSSFWorkbook();

//create blank sheet 
    XSSFSheet sheet = workbook.createSheet("Food"); 

    SetMenu0 set = new SetMenu0(); 

    ArrayList orderList = set.getOrd(); 
    ArrayList priceList = set.getPri(); 

    int size = orderList.size(); 
    Map<String, Object[]> data = new TreeMap<String, Object[]>(); 
    data.put("1", new Object[]{"Order", "Price"}); 
    try{ 
    for(int i=0; i<size; i++) 
    { 
     int in = i+2; 
     String lineNum = ""+in; 
     data.put(lineNum, new Object[]{orderList.get(i), priceList.get(i)}); 
    } 
    } 
    catch(IndexOutOfBoundsException e) 
    { 
     System.out.print("problem"); 
    } 

크기를 3 이상으로 설정하면 예외가 발생합니다.

답변

0

귀하의 문제는이 비트에있을 수 있습니다 :

for(int i = 0; i<=size; i++) 
    { 
     i++; 
     System.out.print("Enter Order: "); 
     orderList.add(input.next()); 
     System.out.print("Enter Price: "); 
     priceList.add(input.nextDouble()); 
    } 

는 루프 본문에서 I ++를 제거하십시오.

+0

하하하. 정말 고마워. 그건 잠시 동안 나를 괴롭혔다. 그래서 어리 석다. – user3752231