我正在为我的第一个java项目创建一个简单的应用程序。 它结合了各种字符串来产生输出。例如 - 姓名。
然而,我遇到了困难,我的GUI全部布局,我的所有字符串都组成了,并且它们都会随机生成结果并在被告知时将其写入文本标签,但如果我再次单击该按钮 - 纳达什么都没有。
我的问题是这样的 - 如何制作按钮重复我正在制作的过程?没有人能够向我解释这一点。我不是在寻找快速修复,而是在寻找“如何”,因为我希望学习。 :)
以下是我的代码的简化版本:
public static String[] name1 = {
"a", "b", "c", "d", "e", "f", "g", "h", "i",
"j", "k", "l", "n", "o", "p", "q", "r", "s",
"t", "u", "v", "w", "x", "y", "z"
};
public static String[] name2 = {
"oh noes", "its not working","sad face"
};
public static int name1length = name1.length;
public static int name2length = name2.length;
public static int rand1 = (int) (Math.random() * name1length);
public static int rand2 = (int) (Math.random() * name2length);
public static String phrase = name1[rand1] + " " + name2[rand2];
答案 0 :(得分:1)
考虑两件事:
答案 1 :(得分:0)
问题是你的变量是静态的,它们只被初始化一次,这意味着你的短语只被评估一次。
假设您每次都想要不同的phrase
,那么每次单击按钮时都会重新初始化它们。从static
,rand1
和rand2
删除单词phrase
并重新编译应该指向正确的方向。
也许像
class RandomLabeller {
private static String[] name1 = "abcdefghijklmnopqrstuvwxyz".toCharArray();
private static String[] name2 = {"oh noes","its not working","sad face"};
private static int name1length = name1.length;
private static int name2length = name2.length;
private int rand1 = (int)(Math.random()*name1length);
private int rand2 = (int)(Math.random()*name2length);
public final String phrase = name1[rand1] + " " + name2[rand2];
}
然后使用新的RandomLabeller()。短语而不是任何类.phrase。更好的是,使用getPhrase()
等几种方法对这些进行隔离。