0

コードをキーストロークとして出力するにはどうすればよいですか? Robot クラスを使用する必要があることはわかっていますが、オブジェクトの出力を作成するにはどうすればよいですか?

import java.util.HashSet;
import java.util.Set;
import java.awt.Robot;
import java.awt.event.KeyEvent;

public class MainClass {

public static Set<String> generatePowerSet(String inputString)
{
    Set<String> result = new HashSet<String>();
    result.add(""); // empty string is an element of the power set

    if (inputString != null && !inputString.isEmpty())
    {
        int n = 1 << inputString.length(); //2^n - the number of elements in the power set 
        StringBuilder sb = new StringBuilder();

        for (int i = 1; i < n; i++) // skip empty set, i = 0
        {
            int k = i; // current number to manipulate
            sb.delete(0, sb.length()); // clear the StringBuilder
            for (int index = 0; index < inputString.length() && k > 0; index++) // break early when k == 0
            {
                if ((k & 1) == 1) // include char at index if bit at that index is 1
                {
                    sb.append(inputString.charAt(index));
                }
                k >>= 1;
            }
            result.add(sb.toString());
        }
    }
    return result;
}

public static void permuteString(String bs, String end) {
    if (end.length() <= 1)
        System.out.println(bs + end);//I THINK I HAVE TO CHANGE SOMETHING OVER HERE
    else
        for (int i = 0; i < end.length(); i++) {
            try {
                String newString = end.substring(0, i) + end.substring(i + 1);

                permuteString(bs + end.charAt(i), newString);
            } catch (StringIndexOutOfBoundsException exception) {
                exception.printStackTrace();
            }
        }
}

public static void main(String args[])  {

    Set<String> powerSet = generatePowerSet("String");

    Set<String> allPossibilities = new HashSet<String>();

    for(String s : powerSet)
    {
        permuteString(" ", s );
    }
}
}
4

1 に答える 1

1

を使ったRobotです。

補遺:

一度に1文字ずつ送信する方法はわかりましたが、文字列は送信できませんでした。

Robotを使用しKeyEvent、単純な逆マッピングはありません。代わりに、大勝利をアニメーション化する方法は無数にあります。ここにいくつかの例があります:

  1. ここjavax.swing.Timerに示すように、を使用して一度に 1 文字ずつテキストをスクロールします。

  2. 「勝つ!」を争う。ここに示すように、画像。

  3. 「勝つ!」をフェード ここに示すように。

補遺:

コンソール ウィンドウに出力したものをすべてファイルに入れる方法はありますか?

java -cp build/classes MainClass > somefile.txt
于 2011-05-07T01:14:34.110 に答える