lkay所以我对这个感到困惑......
我想要实现的是生成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
有任何建议/解决方案吗?
谢谢!
答案 0 :(得分:2)
我认为您的全局rand
变量已初始化为0
。
进行以下更改,它应该可以正常工作:
将convert
的签名更改为以下内容:
public void convert(int rand)
从convert
致电random
时,请致电
convert(rand);
编辑:
根据您的评论,您已int rand
方法声明了random()
。您无需再次声明rand
。
更改以下行
int rand = new Random().nextInt(10); // a new rand variable is created local to method
到
rand = new Random().nextInt(10); // already declared rand variable is used.
答案 1 :(得分:1)
你做的事似乎很奇怪。您自己的应用中的文本字段是?无论如何,获得0的方式是因为您必须在convert方法中使用实例变量(rand
)并将随机数分配给局部变量(也称为rand
但仍然是另一个变量) 。将随机变量作为参数传递给convert方法,如下所示:
public void random() {
int rand = new Random().nextInt(10);
System.out.println(rand);
convert(rand);
}
public void convert(int rand) {
switch (rand) {
...
然后将打印件更改为System.out.println(rand);
答案 2 :(得分:0)
您的rand
方法已将random
声明为本地
int rand = new Random().nextInt(10);
但您是在convert
方法
switch (rand) {
这表明rand
已经被声明为实例变量(否则它将无法编译)而你忽略它......
答案 3 :(得分:0)
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);
}
最后,关于原始代码的一些事情:
希望这会引导你走上正确的道路:)