мне нужна помощь с этим Java кодпереквалифицировать список строк JAVA
У меня есть этот список, сохраненный в текстовом файле в следующем:
a b
a c
a d
c h
b e
b f
b g
g l
e i
e j
f k
k m
1 2
1 3
2 4
После прочтения файла test.txt, то строки добавляются в список (с именем ch в коде) состоят из двух частей, первая часть - это источник, который извлекается как переменная src в коде . Вторая часть является целевым экстрактом как trg в коде
Например, в первой строке: ab так urce (src) является a et target (trg) is b
СЕЙЧАС, я хочу создать новый список (myList в коде), когда есть еще одна строка, где цель равна исходной строке предыдущей строки. Например, давайте оставаться с кулак линии и посмотреть, 5-й линии:
a b
b e
Новый список, который MyList должен содержать строку, как: Abe
Так что в целом список ч должен быть реклассифицируются в следующих :
a d
a c h
a b g l
a b e i
a b e j
a b f k m
1 2 4
1 3
я получаю следующее исключение:
линии: AB исключение в потоке "основного" java.lang .NullPointerException в pathcreator.test.main (test.java:48) Подобрал _JAVA_OPTIONS: -Xmx512m
Этот код не работает должным образом поясню, потому что я строю только новый список с 3-х элементов myList.add (src [a] + "" + trg [a] + "" + trg [b]); в то время как это может быть больше.
Любая помощь?
Вот мой код:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedList;
public class Test {
public static void main(String[] args) throws FileNotFoundException {
FileReader fis;
fis = new FileReader("c:\\test.txt");
BufferedReader in = new BufferedReader(fis);
String i=null;
String line =null;
String[] src = null;
String[] trg = null;
LinkedList<String> ch = new LinkedList<String>();
LinkedList<String> myList = new LinkedList<String>();
try {
while((i = in.readLine()) != null)
{
line = i;
ch.add(line);
System.out.println(" line:" + line);
src = new String[ch.size()];
trg = new String[ch.size()];
for(int j = 0; j<ch.size()-1;j++){
String pC = ch.get(j).toString();
String[] pE = pC.split(" ");
src[j] = pE[0];
trg[j] = pE[1];
}
for(int a = 0; a<src.length; a++){
for(int b = a; b<trg.length; b++){
if(src[b].equals(trg[a]) && a!= b){
myList.add(src[a] +" "+trg[a]+" "+trg[b]);
System.out.println(src[a] +" "+trg[a]+" "+trg[b]);
}
}
}
}
}
catch (IOException e){
System.out.println(e.getMessage());
System.exit(1);
}
}
}
Что критерии позади этого алгоритма? Что вы имеете в виду, реклассифицируя? Кроме того, вы должны опубликовать точное * exception stacktrace *, чтобы мы могли понять проблему. –
Я не понимаю, что пытаюсь сделать .. ни из описания, ни из кода. До сих пор я могу сказать вам, что вы нарушаете обычные правила кодирования: переменные начинаются с букв нижнего регистра, классы начинаются с прописных (что затрудняет мне также понимание этого). Но забудьте о коде: не могли бы вы объяснить цель этого в разных словах еще раз? – tilois
@AlessandroSuglia srry для этого, я добавил более подробную информацию, спасибо заранее. –