1

私は、コマンドライン引数として指定された単語のすべての可能な順列を見つけるプログラムを持っていますが、プログラムから出力を取得できず、プログラムは正常にコンパイルされ、プログラムを実行すると、次のことができます。何が悪いのかわかります。何か案は?

    import java.io.*;
02   
03  public class Anagrams
04  {
05      private static char [] word;
06      private static char [] permutation;
07      private static boolean [] characterUsed;
08   
09       
10       
11      public static void main(String [] args)throws Exception
12      {
13        
14         word = args[0].toCharArray();
15         permutation = new char[word.length];
16         characterUsed =  new boolean[word.length];
17         printPermutations(0);
18      }//main
19       
20     private static void printPermutations(int currentIndex)throws Exception          
02     {
03   
04      if(currentIndex == permutation.length)
05          System.out.println(permutation);
06      else
07      {
08          for(int index=0;index<word.length-1;index++)
09          {
10  //if the character at that index hasn't been used       
11             if(!characterUsed[index]);
12              {
13                 //mark character at this position as in use
14                 characterUsed[index] = true;
15                 //put the character in the permutation
16                permutation[index]= word[currentIndex];
17                 printPermutations(currentIndex +1);
18                 characterUsed[index] = false;
19               }//if
20           }//for
21         }//else
22       }//printPermutation
41  }//Anagrams
4

4 に答える 4

2

これが唯一の問題であるかどうかはわかりませんが、この行も問題ないように見えます。

for (int index = 0; index < argument.length - 1; index++)

char配列の最後を使用しないという意味ですか?あなたはおそらく意味します:

for (int index = 0; index <= argument.length - 1; index++)

また

for (int index = 0; index < argument.length; index++)
于 2012-05-03T16:45:38.037 に答える
2

変化する

permutations[index] = permutations[currentIndex];

permutations[index] = argument[currentIndex];

premutation事前入力されていないため、常にヌル文字に割り当てています。

将来的にSystem.out.println("<"+myString+">");は、このような問題に役立つようなことをすることができます。

そして変化する

for (int index = 0; index < argument.length-1; index++)

for (int index = 0; index < argument.length; index++)

于 2012-05-03T16:36:56.997 に答える
1

何も出力されないのは、forループのエラーが原因です。試す

for(int index = 0; index <argument.length; index ++)

于 2012-05-03T16:46:42.457 に答える
1

問題は11行目と12行目にあると思います。本当に持っているつもりでしたか。if条件の終わりに?

10  //if the character at that index hasn't been used       
11             if(!characterUsed[index]);

お役に立てば幸いです。

于 2012-05-27T23:54:40.537 に答える