我的文本数组有问题,文本不断切换。这是我到目前为止的代码:
private void drawSplash(Graphics2D g) {
if (displayed == false) {
Random r = new Random();
String list;
String items[] = { "Buggy!", "New Game!", "Roll up, roll up!",
"Made from Scratch" };
int amount;
amount = (int) (Math.random() * 25 + 1);
list = items[r.nextInt(3 + 1)];
System.out.println(list);
g.setFont(font2);
g.setColor(Color.BLACK);
g.drawString(list, 320, 240);
displayed = true;
}
}
我想这样做,以便每当程序重新启动时,字符串都会改变。
有人可以帮我吗?这真让我烦恼。
答案 0 :(得分:1)
问题是你想在程序启动之间保持状态,否则你会得到重复。所以你想要做的是:
在启动期间:如果不存在具有混洗列表的属性文件,则创建一个混洗列表,将索引设置为1
然后:
static
字段我会在你用完物品时把它留给你。
对于快速修复,只需在每次使用该类时显示一个随机项:
private static String ITEMS[] = { "Buggy!", "New Game!",
"Roll up, roll up!", "Made from Scratch" };
private String itemDisplayed = chooseItem();
private String chooseItem() {
Random r = new SecureRandom();
int i = r.nextInt(ITEMS.length);
return ITEMS[i];
}
private void drawSplash(Graphics2D g) {
g.setColor(Color.BLACK);
g.setFont(font2);
g.drawString(itemDisplayed, 320, 240);
displayed = true;
}
答案 1 :(得分:0)
这是错误的:
list = items[r.nextInt(3+1)]
每次执行drawSplash()
方法时,list
都会有一个新的随机值。
你应该只启动一次:
String list;
Random r = new Random();
public void initListIndex(){
String items[] = { "Buggy!", "New Game!", "Roll up, roll up!",
"Made from Scratch" };
int listIndex = r.nextInt(3 + 1);
list= items[listIndex];
}
private void drawSplash(Graphics2D g) {
if (displayed == false) {
System.out.println(list);
g.setFont(font2);
g.setColor(Color.BLACK);
g.drawString(list, 320, 240);
displayed = true;
}
}
答案 2 :(得分:0)
我猜每次文本更改时都会调用drawSplash。如果您只想绘制一个随机字符串,例如初始化为
创建一个自己的函数list = items[r.nextInt(3+1)];
仅被调用一次
答案 3 :(得分:0)
问题不是drawSplash()
,而是a)调用它的频率,b)即使经常调用它,也有人必须将displayed
的值更改为false
方法之外。
只是一些小的评论:
if (!displayed)
是通常的风格
amount
Random r
并非真正需要