好吧,所以我陷入了这个困境...
我正在尝试实现的是生成0-9之间的一系列数字。在生成数字之后,我希望将它们键入屏幕上的文本字段中。除了将随机数更改为键码之外,我已经掌握了所有基本功能。目前,当我将其转换为键码时,它变为0。
这是我的代码:
public void random() {
int rand = new Random().nextInt(10);
System.out.println(""+rand);
convert();
}
public void convert() {
switch (rand) {
case 0:
rand = KeyEvent.VK_0;
System.out.println(""+0);
break;
case 1:
rand = KeyEvent.VK_1;
System.out.println(""+1);
break;
case 2:
rand = KeyEvent.VK_2;
System.out.println(""+2);
break;
case 3:
rand = KeyEvent.VK_3;
System.out.println(""+3);
break;
case 4:
rand = KeyEvent.VK_4;
System.out.println(""+4);
break;
case 5:
rand = KeyEvent.VK_5;
System.out.println(""+5);
break;
case 6:
rand = KeyEvent.VK_6;
System.out.println(""+6);
break;
case 7:
rand = KeyEvent.VK_7;
System.out.println(""+7);
break;
case 8:
rand = KeyEvent.VK_8;
System.out.println(""+8);
break;
case 9:
rand = KeyEvent.VK_9;
System.out.println(""+9);
break;
}
}
输出是这样的:
5
0
应该是什么:
5
53
有什么建议/解决方案吗?
谢谢!!
最佳答案
Luiggi是对的。该代码无法编译。
无论如何,如果我在哪里猜测,此代码可能对您有用:
public void random() {
int rand = new java.util.Random().nextInt(10);
convert(rand);
}
public void convert(int rand) {
int vk = 0;
switch (rand) {
case 0:
vk = java.awt.event.KeyEvent.VK_0;
break;
case 1:
vk = java.awt.event.KeyEvent.VK_1;
break;
case 2:
vk = java.awt.event.KeyEvent.VK_2;
break;
case 3:
vk = java.awt.event.KeyEvent.VK_3;
break;
case 4:
vk = java.awt.event.KeyEvent.VK_4;
break;
case 5:
vk = java.awt.event.KeyEvent.VK_5;
break;
case 6:
vk = java.awt.event.KeyEvent.VK_6;
break;
case 7:
vk = java.awt.event.KeyEvent.VK_7;
break;
case 8:
vk = java.awt.event.KeyEvent.VK_8;
break;
case 9:
vk = java.awt.event.KeyEvent.VK_9;
break;
}
System.out.println(rand+"->"+vk);
}
请注意,由于
VK_0
至VK_9
的值介于48至57之间,因此您也可以这样做:public void randomAndConvert() {
int rand = new java.util.Random().nextInt(10);
int vk = rand+48;
System.out.println(rand+"->"+vk);
}
最后,关于原始代码的几件事:
printLn应该是println
兰特从未在convert中声明
永远不会传递rand来转换参数
兰特从未转换输出
希望这会引导您走上正确的道路:)
关于java - 将随机数更改为键码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13024396/