2013-04-20 2 views
0

Я работаю над программой, которая считывает входные данные из файла и дает вывод, сколько строк является дополнительным. здесь кодArray Index из связанной ошибки

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 <(input.length-1); -> j ++ <-)' – jlordo

+0

кто-то просто копирует/вставляет какой-либо код, не просматривая его перед составление его –

+0

luiggi Mendoza не будет несправедливым. Я сам написал этот код –

ответ

5

in for loop with 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++) 

Fix это так:

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

Вы видите, вы увеличивали неправильный счетчик. Кроме того, условие цикла немного странно, обычно мы используем i < inputs.length: обратите внимание, что мы не вычитаем из длины 1, иначе последний элемент в массиве не будет посещаться.

Смежные вопросы