2016-10-13 6 views
0

基本的には、私は文字列と文字列検索用語の配列をとり、配列中の検索用語の位置を返します(見つからない場合は-1)。文字列の配列とバブルソート。私はバブルの並べ替えだけであると思われるエラーが表示されていますが、私は理由を知りません。バブルソートの宿題でエラーが発生する

私は取得していますエラーメッセージは次のとおりです。

Exception in thread "main" java.lang.NullPointerException 
at java.lang.String$CaseInsensitiveComparator.compare(String.java:1193) 
at java.lang.String$CaseInsensitiveComparator.compare(String.java:1186) 
at java.lang.String.compareToIgnoreCase(String.java:1239) 
at mmtextreader.MMTextReader.bubbleSort(MMTextReader.java:100) 
at mmtextreader.MMTextReader.main(MMTextReader.java:47) 

コード:

public class TextReader { 

    /** 
    * @param args the command line arguments 
    * @throws java.io.FileNotFoundException 
    */ 
    public static void main(String[] args) throws FileNotFoundException { 
     // TODO code application logic here 

     String[] Array; 

     Array = wordPut("beowulf.txt"); 

     Scanner reader = new Scanner(System.in); 

     System.out.println("Input word: "); 

     String term = reader.next(); 

     int position = pFind(Array, term); 

     if(position == -1) { 
      System.out.println("no word found"); 
     } else { 
      System.out.println(term + " is found at " + (position+1)); 
     } 

     bubbleSort(Array); 
    } 

    public static String[] wordPut(String s) throws FileNotFoundException { 
     String[] Array = new String[50000]; 

     Scanner reader = new Scanner(new BufferedReader(new FileReader(s))).useDelimiter("[^\\p{Alpha}']+"); 

     int wordcount = 0; 
     while (reader.hasNext()) { 
      Array[wordcount] = reader.next(); 
      wordcount++; 
     } 
     for (int i = 0; i < Array.length; i++) { 
      if (Array[i] != null) { 
       System.out.println(Array[i]); 
      } 
     } 

     return Array; 
    } 

    public static String[] bubbleSort(String[] a) { 
     int lElement = a.length - 1; 
     boolean t = true; 
     for (int i = 0; i <= a.length - 1; i++) { 

      boolean swap = false; 

      for (int j = 0; j < lElement; j++) { 
       if (a[j].compareTo(a[j + 1]) > 0) { 
        String store = a[j]; 
        a[j] = a[j + 1]; 
        a[j + 1] = store; 
        swap = true; 
       } 
      } 
      lElement--; 
      if (swap == false) { 
       break; 
      } 
     } 
     for(int n = 0; n < a.length; n++) { 
      System.out.println(a[n]); 
     } 
     return a; 
    } 

    public static int pFind(String[] a, String trm) { 
     int pos = -1; 
     for (int i = 0; i < a.length; i++) { 
      if (a[i].compareToIgnoreCase(trm) == 0) { 
       pos = i; 
       break; 
      } 
     } 
     return pos; 
    } 

} 
+1

解決しようとしている問題は何ですか?エラーは何ですか? – Amita

+0

エラーメッセージは、プログラミングにおける修正の鍵であることを常に覚えておいてください。 –

+0

plaeseは以下の基準に従って質問を書き換えます:http://stackoverflow.com/help/mcve –

答えて

1

OK!私はあなたのコードをチェックし、あなたが持っている唯一の問題は、あなたの配列がwordPutで問題(ある5000の大きさを持つことinicializeある)メソッド

String[] Array = new String[50000]; 

私はブーブレも、正常に動作し、自分のコンピュータ上で、あなたのコードを試してみました並べ替えは配列の宣言を除いてうまくいく、配列のサイズを調べてから宣言しよう!

+0

正しくないですか?なぜdownvote? –

+1

これは宿題であり、彼はアルゴリズムを求めていませんが、なぜ彼のアルゴリズムが働かないのですか?あなたはまだ彼の誤りが何であるかを編集し説明することができます。 – Asoub

+0

@Asoub better? :D –

関連する問題