これまでにarray out of bounds
に問題がありましたが、もう受信しません。私ArrayList
を使用した場合Javaの単語を比較する
私の問題があり、それがプリントアウトされます:
aba, aba, abaa, abaxxa, runner, runner, runners, school, school, schooling, schools, tasker, tasker
はtask
を除外し、run
。
私はこれをしばらく見てきましたが、私はそれを理解できません。どんな助けも素晴らしいだろう!
import java.io.*;
import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
public class RootWords {
public static void main(String[] args) {
String Word;
List<String> xList = new ArrayList<String>();
try{
BufferedReader reader = new BufferedReader(new FileReader("Words.txt"));
while ((Word = reader.readLine()) != null) {
xList.add(Word);
}
}
catch (IOException ioe){
System.out.println("Problem opening input file");
}
String[] Words = new String[ xList.size() ];
Collections.sort(xList);
xList.toArray(Words);
int c;
String roots = "";
for(int i = 0; i < Words.length ; i++){
c = root(Words[i],Words[i+1]);
if(c >= 3 || c <=5){
roots = Words[i];
System.out.printf("%s\n", roots);
while(Words[i].startsWith(roots)){
System.out.printf("%s\n", Words[i]);
i++;
}
// i--;
}
}
}
public static int root(String a, String b){
int min;
if(a.length() < b.length()){
min= a.length();
}
else{
min = b.length();
}
//return min;
int i;
i = 0;
while (i < min)
{
if (a.charAt(i) == b.charAt(i))
i++;
else break;
}
return i;
}
}
私が持っているコードで範囲外の配列を受け取ることはできません。完全なリストを印刷するのに問題があります。私はしばらくしてabaを走らせます。abaa tasker abaxa runnerをランニングランナーの学校に派遣していますが、それを印刷すると、aba aba abaa abaxaaランナーランナー学校学校学校の学校職員のタスク担当者になります。したがって、私は、タスクを逃すと、それはArrayIndexOutOfBounds
例外がスローされますときi+1 = words.length
for(int i = 0; i < Words.length ; i++){
c = root(Words[i],Words[i+1]);
を
の配列をソートするためのコンパレータ又は比較を使用 'iが(Words.length - 1)<'それを修正することになるが。 – Rakesh
コメントをいただきありがとうございますが、私はそのコードでarraryindexoutofboundsを持っていないという質問で言いましたが、正しいルートワードを印刷するのに問題があります – helloman