2013-04-20 2 views
0

파일에서 입력을 읽고 출력 할 문자열을 보완하는 프로그램을 만들고 있습니다. 여기서 코드배열 인덱스 out of bound 오류

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.Arrays; 
import java.util.Random; 
import java.util.Scanner; 




public class QuickSorting { 

    /** 
    * @param args 
    * @throws IOException 
    */ 
    public static void main(String[] args) throws IOException { 
     String data; 
     Boolean status=false; 
     int counter=0; 
     int cases,case_item; 
     String[]inputs; 
     String to_cmp; 
     String with_cmp; 
     // TODO Auto-generated method stub 
     File file = new File("input.txt"); 
     // Get data from this file using a file reader. 
     FileReader fr = new FileReader(file); 
     // To store the contents read via File Reader 
     BufferedReader br = new BufferedReader(fr); 
     //writer to write in file 

     data=br.readLine(); 
     cases=Integer.parseInt(data); 
     //check total cases 
     for(int i=1;i<=cases;i++) 
     { 
      data=br.readLine(); 
      case_item=Integer.parseInt(data.trim()); 
      inputs=new String[case_item]; 
      //check entries in each case 
      for(int c_i=0;c_i<case_item;c_i++) 
      { 
       data=br.readLine(); 
       inputs[c_i]=data; 

      } 

      for(int i1=0;i1<(inputs.length-1);i1++) 
      { 

       for(int j=0;j<(inputs.length-1);i1++) 
       { 
        if(i1!=j) 
        { to_cmp=inputs[i1].toString(); 
         with_cmp=inputs[j]; 
         status=compare_entry(to_cmp,with_cmp); 
         if (status) 
         {counter++;} 
        } 
       } 

      } 
      System.out.println("The number of complementary strings are "+counter); 
     } 

} 

public static boolean compare_entry(String to_cmp,String with_cmp) 
{Boolean stat=false; 
for(int i=0;i<(to_cmp.length()-2);i++) 
{ 
    if(to_cmp.charAt(i)!=with_cmp.charAt(i)) 
    {stat=true; 
    } 
    else 
    { 
     break; 
    } 
} 
    return stat;} 
} 

이다하지만이 라인에 결합 errorin 라인 (58)에서 배열을 얻고 to_cmp = 입력 [I1]로 .toString();

+1

'for (int j = 0; j <(inputs.length-1); -> j ++ <-)' – jlordo

+0

누군가는 전에 그것을 검토하지 않고 일부 코드를 복사/붙여 넣기 만하면됩니다. 그것을 컴파일 –

+0

luiggi Mendoza는 불공평하지 않습니다. 나는 그 코드를 직접 작성했다. –

답변

5

for 루프에서 j를 사용하면 i1을 다시 증가시킵니다. 당신은

for(int j=0;j<(inputs.length-1);i1++) 

어떤 문제는이 라인에

for(int j=0;j<(inputs.length-1);j++) 
+0

나는 서둘러 쓰고 그걸 볼 수 없었다. –

1

해야이이 같은

for(int j=0;j<(inputs.length-1);i1++) 

수정을 :

for(int j=0;j<(inputs.length-1);j++) // it's j++, not i1++ 

당신은, 당신을보고 잘못된 c를 증가시키고 있었다. 헌터. 또한 루프 조건은 조금 특이합니다. 일반적으로 i < inputs.length을 사용합니다. 길이에서 1을 뺀 것이 아니라는 것을 알아 두십시오. 그렇지 않으면 배열의 마지막 요소가 방문되지 않습니다.