ich möchte gerne eine Textdatei (.txt) einlesen mit dem StringTokenizer in einzelne Tokens zerlegen diese dann in ein Array packen, sortieren, und ausgeben.
Das einlesen funktioniert wunderbar, auch das zerlegen. Aber das speichern in ein Array und das sortieren mittels Arrays.sort (mit Hilfe von "import java.util.Arrays;") macht mir noch Probleme glaube ich.
Eclipse meldet mir keine Fehler aber wenn ich mein Programm über die Konsole aufrufe, dann gibt es folgende fehlermeldung:
Code:
Exception in thread "main" java.lang.NullPointerException
at java.util.ComparableTimSort.countRunAndMakeAscending<Unknown Source>
at java.util.ComparableTimSort.sort<Unknown Source>
at java.util.ComparableTimSort.sort<Unknown Source>
at java.util.Arrays.sort<Unknown Source>
at tokenindex.main<tokenindex.java:26>
Auch bei einem leeren String Array gibts Ausgaben ohne Exception -> "null".
Läuft alles, wenn du die Zeile mit Sort auskommentierst? Dein Problem ist, dass das Array nicht komplett gefüllt ist und du trotzdem versuchst es zu sortieren. Fülle als erstes das Array komplett und sortiere dann.
Läuft alles, wenn du die Zeile mit Sort auskommentierst? Dein Problem ist, dass das Array nicht komplett gefüllt ist und du trotzdem versuchst es zu sortieren. Fülle als erstes das Array komplett und sortiere dann.
importjava.io.*;importjava.util.*;importjava.util.regex.Pattern;publicclassTokenIndex_Exercixe1{//defines public class called "TokenIndex"publicstaticvoidmain(String[] args)throwsException{//defines main-method which throws Exceptionif(noMisentry(args)){//checks by noMisentry-method if input in console is correct File data1 =newFile(args[0]);//loads File from args[0]@SuppressWarnings("resource")BufferedReader inputReader =newBufferedReader(newInputStreamReader(newFileInputStream(data1)));//loads text from file into main-methodString data2 ="";//defines helpstringString data3 ="";//defines helpstringwhile(inputReader.ready()==true){//while-loop to fill helpstring
data2 = inputReader.readLine();//reading lines of textfilen into data2System.out.println("Your loaded Text: ");//displaying "your laoded Text: "System.out.println("\n");//displaying blanklineSystem.out.println("\""+ data2 +"\"");//displaying loaded Text in originalSystem.out.println("\n");//displaying blanklineSystem.out.println("Splitting text and display token in alphabetically order!");//displaying "Splitting text and display token in alphabetically order!"System.out.println("\n");//displaying blanklineSystem.out.println("Splitting completed: ");//displaying "Splitting completed: "System.out.println("\n");//displaying blanklineStringTokenizer sortingOutDelimiter =newStringTokenizer(data2,",.!?/()[]\\;:\"§$%&=");//using StringTokenizer to sort out delimiters from textwhile(sortingOutDelimiter.hasMoreTokens()==true){//while-loop to load several tokens in stringhelper data3
data3 = data3 + sortingOutDelimiter.nextElement()+"";}}String sortWords = data3;//defines sortWords to sort tokensString[] inputAsArray = sortWords.split(Pattern.quote(" "));//delete blanks and convert character-string to arrayList<String> inputAsList =Arrays.asList(inputAsArray);//fill Array-content in a List called inputAsListCollections.sort(inputAsList);//Sorting List in alphabetically-order by collections.sort-functionfor(int i=0;i < inputAsArray.length;i++){//for-loop to sort list for each tokenSystem.out.println(inputAsList.get(i));//displaying tokens in alphabetically correct order}}}/*
if (inList(list,word)){
list.add(word);
}
public static boolean inList(List<E> list, String pWrd){
int i = list.size();
for(int j = 0; j <-(i-1); j++){
String str1 = new String((String) list.get(j));
String str2 = pWord;
if(str1.equals(str2)){
return false;
}
}
}
*/publicstaticbooleannoMisentry(String[] args){//defines public class noMisentry to check if input in console ist correctif(args.length ==1){//if-statement to check if 1 parameter is givenreturntrue;//returning "true" to main-method}else{//else-statemtent if input isn't correctSystem.out.println("Input isn´t working! Please input 1 parameters with fontcode. Thank You!");//displaying help, caused by incorrect input in consolereturnfalse;//returning false to main-method, so that main method is not starting }}}
funktioniert soweit einwandfrei.. jedoch habe ich es nicht hinbekommen wörter die mehrmals im text vorkommen nur einmal auszugeben.. ich hatte versucht dafür eine methode zu schreiben, die hier "inList" heißt und auskommentiert ist. Hat jmd. eine ahnung wie ich das noch machen könnte?