Java 如何将代码输出为击键?
如何将代码输出为击键?我知道我必须使用Robot类,但是我如何才能使它为对象输出Java 如何将代码输出为击键?,java,awtrobot,Java,Awtrobot,如何将代码输出为击键?我知道我必须使用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&
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 );
}
}
}
import java.util.HashSet;
导入java.util.Set;
导入java.awt.Robot;
导入java.awt.event.KeyEvent;
公共类主类{
公共静态集generatePowerSet(字符串输入字符串)
{
Set result=new HashSet();
result.add(“”;//空字符串是幂集的一个元素
if(inputString!=null&&!inputString.isEmpty())
{
int n=1 0;index++)//当k=0时提前中断
{
if((k&1)==1)//如果索引处的位为1,则在该索引处包括char
{
sb.append(inputString.charAt(index));
}
k>>=1;
}
添加(sb.toString());
}
}
返回结果;
}
公共静态void permuteString(字符串bs,字符串结束){
如果(end.length()这是一个正在使用的机器人
增编:
我知道如何一次发送一个字符,但不能发送字符串
Robot
使用KeyEvent
,没有简单的反向映射。取而代之的是,有一百万种方法可以为大赢家制作动画;以下是一些示例:
使用javax.swing.Timer
一次滚动文本一个字符,如图所示
如图所示,将“赢”图像置乱
如图所示,淡入“Win!”
增编:
有没有办法将我输出到控制台窗口中的所有内容都放在一个文件中
“对象的输出”是什么意思?当我试图用机器人输出它时,它说它需要一个字符串而不是一个对象。@TheWaller:这并不能回答我的问题,而且你仍然没有告诉我们你最终要实现什么。你能为你的问题提供更多的细节吗?假设我们不能读懂你的心思。对不起,我正在制作一个程序,可以输出你的想法ut字符串的所有可能组合。我知道了。现在我必须让Robot类将它们作为击键输出。我该怎么做?@TheWaller:对不起,也许是我,但我仍然不知道你所说的“将它们作为击键输出”是什么意思?作为什么的击键?作为ArrayList?如果你不能很快得到答案,请澄清。我知道如何一次发送一个字符而不是字符串。Robot
使用KeyEvent
。相反,使用javax.swing.Timer
将文本添加到标签中,一次一个字符。有没有办法将我输出的所有内容放入控制台窗口转换成一个文件?我的意思是在源代码中。然后我想制作另一个程序,只需读取其中的字母并将它们全部击出。转换成一个文件?试试。
java -cp build/classes MainClass > somefile.txt