Я хочу создать индекс с помощью массива объектов. Индекс, конечно же, представляет слово и строки, содержащие это слово. Я создал класс Pair, представляющий пару (слово , строки), где строки содержатся в массиве целых чисел. КлассСоздание индекса с массивом объектов
public class Pair
{ private String word;
private int [] a;
private int inputSize;
public Pair(String word,int line)
{this.word=word;
a=new int [10];
a[inputSize++]=line;
}
public String getWord()
{return word;}
public void addPosition(int line) //resize
{ if(inputSize==a.length-1)
{ int[] newA=new int [2*inputSize];
for(int i=0;i<inputSize;i++)
{ newA[i]=a[i];}
a=newA;
}
a[inputSize++]=line;
}
public String getPositions()
{String s="";
for(int i=0;i<inputSize;i++)
{s=s+" "+a[inputSize] ;}
return s;
}
public String toString()
{ String ss="";
ss=getWord()+" [ " +getPositions()+" ] ";
return ss;
}
}
После того, как я создал индекс
public class Index
{ private Pair [] a;
private int inputSize;
public Index()
{a=new Pair [10];
inputSize=0;
}
public void add(String word,int pos)
{ if(inputSize==a.length-1)
{ Pair [] newA=new Pair [2*inputSize];
for(int i=0;i<inputSize;i++)
{ newA[i]=a[i];}
a=newA;
}
Pair p=new Pair(word,pos);
for(int i=0;i<inputSize;i++)
{ if(a[i].getWord().equals(word)) // i check if "word" is already in the array, if so i add the new line
{ a[i].addPosition(pos);
}
}
a[inputSize++]=p;
}
public String toString()
{String s="";
for(int i=0;i<inputSize;i++)
{ s=s+a[i].toString()+"\n";
}
return s;
}
}
класс После того, как я создал главный класс
import java.io.*;
import java.util.*;
public class IndixTester
{public static void main(String [] args)
{ FileReader read=null;
Index index=new Index();
Pair p;
try{read=new FileReader("input.txt");
}
catch(IOException e)
{System.err.println("errore");
}
int line=0;
Scanner c=new Scanner(read);
while(c.hasNextLine())
{ String s=c.nextLine();
line++;
Scanner token=new Scanner(s);
token.useDelimiter("[^A-Za-z0-9]+");
while(token.hasNext())
{
String ss=token.next();
index.add(ss,line);
}
token.close();
}
System.out.println(index.toString());
}
}
Но это не работает! Я получил что-то вроде это:
кнопку [0 0]
а [0 0 0 0 0]
- собака [0 0 0]
Вместо того, чтобы иметь что-то вроде этого
- кнопку [2 3]
- а [12 4 3 5]
- собаки [1 2]
Где, конечно, числа представляют строки, которые имеют это слово. Пожалуйста, помогите мне. Большое спасибо
Спасибо так много, такая глупая ошибка! –