我最近开始了我的软件工程教育,我们目前正在学习Java的基础知识……我们必须创建一个简单的基于文本的机场游戏,我遇到了一些小麻烦。
我已经尝试了google和SOF搜索功能,找到了许多“解决方案”,但似乎没有一个能解决我的问题。所以请原谅我的“菜鸟”问题:
在游戏中,我们有几个机场,每轮产生随机数量的乘客,最少100人,最多999人。为此,我使用了以下代码...这是有效的,不会给我任何错误,但我仍然得到100以下的随机结果。我做错了什么?就像我说的,我尝试了许多不同的方法,但它似乎忽略了我的if / if else条件……
int paxGenerator;
public int getPaxGenerator() {
return this.paxGenerator = (int) (Math.random() * 1000);
}
public void setPaxGenerator(int paxGenerator) {
if (paxGenerator<100) {
this.paxGenerator = 100;
} else if (paxGenerator > 999) {
this.paxGenerator = 999;
}
}编辑:
return this.paxGenerator = (int) (Math.random() * 900) + 100;确实解决了我的问题,thx @user43219,但是,为了便于学习,有人能给我举个例子,说明我应该如何正确地实现if else语句吗?因为我想创建12个新对象,所有这些对象都必须生成一个不同的随机数。如果我把随机代码放在getter/setter之外,它每次都会给我相同的数字……而且if else语句甚至不允许在getter/setter之外...请记住,我是一个初学者,所以事情对我来说并不那么明显:提前做好准备!
发布于 2015-10-27 23:01:44
如果你有一个100名乘客的“楼层”,我个人会避免所有复杂的逻辑,只使用this.paxgenerator = (int)(Math.random()*900)+100;
(int)(Math.random()*x)将生成从0到x-1的数字。
发布于 2015-10-27 23:03:11
你不能给你的二传手打电话。这行代码:
return this.paxGenerator = (int) (Math.random() * 1000);不隐式调用setPaxGenerator() -它绕过设置器,直接设置属性值。
发布于 2015-10-27 23:03:26
您可以使用Random类。
Random rand = new Random();
int randomNum = rand.nextInt((999 - 100) + 1) + 100;
System.out.println(randomNum);https://stackoverflow.com/questions/33371320
复制相似问题