2014-11-07 2 views
-1

저는 돈을 백분율 (즉, $ 1000 * .04 = $ 40)으로 계산하고 그 결과 (즉, $ 40)를 인쇄하려고합니다. 나는 정보를 담고있는 2D 문자열 배열을 가지고있다. 먼저 첫 번째 for 루프에 표시된 특정 요소에 따라 각 행의 백분율을 인쇄하려고합니다. 그런 다음 돈 시간의 결과를 두 번째 for 루프의 백분율로 표시하고 싶습니다. 결과를 생성하기 위해 돈을 곱하는 소수로 표시되는 1D Double 배열이 있습니다. 이 오류가 계속 발생합니다 -> java.lang.ArrayIndexOutOfBoundsException : 3
그래서 1D Double 배열에 문제가있는 것으로 판단되지만 무엇을 모르겠습니다.자바 배열 문제 곱하기 결과 표시

FileReader fr = new FileReader("input.txt"); 
    BufferedReader br = new BufferedReader(fr); 

    //2D array 
    String[][] input = new String[15][4]; 

    //1D array 
    Doubt[] in = new Double[3]; 

    for(int row=0; row<input.length; row++){ 
     int a = Integer.parseInt(input[row][1]); 
     int b = Integer.parseInt(input[row][2]); 
     double s = Double.parseDouble(input[row][3]); 

      if(a>=50 && b==1){ 
       System.out.println(input[row][0] + "\t\t2%"); 
       in[row]=0.02; 
      } 
      if(a>=25 && b==1){ 
       System.out.println(input[row][0] + "\t\t4%"); 
       in[row]=0.04; 
      } 
      if((a>=15 && b==1){ 
       System.out.println(input[row][0] + "\t\t6%"); 
       in[row]=0.06; 
      } 
    } 

    for(int row=0; row<input.length; row++){ 
     int a = Integer.parseInt(input[row][1]); 
     int b = Integer.parseInt(input[row][2]); 
     double s = Double.parseDouble(input[row][3]); 

     System.out.println(input[row][0] + "\t\t" + s*in[row]); 
    } 
+0

으로 선언하십시오. 배열의 세 번째 요소에 액세스하고 있습니다. 'array'의 인덱스는'0'으로 시작합니다. –

답변

2

당신의 in[] 배열의 사이즈가 3이다하지만 row=3in[row]=0.06;java.lang.ArrayIndexOutOfBoundsException가 발생하기 때문에이 될 수 있습니다.
in[]Double[] in = new Double[input.length];