我是java /编程的新手,我认为一个好的学习方法是制作一个简单的文本RPG游戏。 我在一个类文件中,您可以雇佣工人为您开采矿石。基本上,我从用户那里获取2000金币,然后将数字随机化1-5次,每次10到10次,他们根据数量得到矿石10次。 (例如,1是铜,4是金)
这是我到目前为止所拥有的,当我运行它需要我的黄金,但只给我一个矿石,它真的应该给我10,任何帮助? 编辑:对不起忘了提到我有int x = 0;在顶部
if ((input.input.equalsIgnoreCase("a")) && inventory.goldCoins >= 2000) {
System.out.println("You have hired Sanchez for $2000!");
inventory.goldCoins -= 2000;
do {
int workerOre = (int )(Math.random() * 5 + 1);
if (workerOre == 1) {
inventory.addInventory("Copper Ore");
menu.start();
} else if (workerOre == 2) {
inventory.addInventory("Iron Ore");
menu.start();
} else if (workerOre == 3) {
inventory.addInventory("Steel Ore");
menu.start();
} else if (workerOre == 4) {
inventory.addInventory("Gold Ore");
menu.start();
} else if (workerOre == 5) {
inventory.addInventory("Copper Ore");
}
x++;
} while (x < 10);
System.out.println("Sanchez has finished his shift and the ore has been added to your inventory!");
} else if ((input.input.equalsIgnoreCase("a")) && inventory.goldCoins < 2000) {
System.out.println("You do not have enough money!");
worker();
}
答案 0 :(得分:1)
原因可能是你从未初始化过x,所以它只等于一些垃圾值。尝试在do-while循环之前添加int x = 0
。
我还注意到您在将库存添加到库存后调用menu.start()
,您的程序是否有可能永远不会重新进入循环?
在确定案例后,您需要使用break
跳出switch语句,其次,您可以在交换机的末尾添加default
,如果有的话永远是案例1到案例4不满足的时候。例如:
switch(ore)
{
case 1: inventory.addInventory("Copper Ore");
break;
case 2: inventory.addInventory("Iron Ore");
break;
case 3: inventory.addInventory("Steel Ore");
break;
case 4: inventory.addInventory("Gold Ore");
break;
default: inventory.addInventory("Copper Ore");
}
答案 1 :(得分:0)
看起来你永远不会初始化x
。
在开始int x = 0
之前添加do...while
。
答案 2 :(得分:0)
尝试类似:
for (int i = 0; i < 10; i++) {
mineOre();
}
public void mineOre() {
int ore = (int) Math.random() * 5 + 1;
switch (ore) {
case 1: inventory.addInventory("Copper Ore");
case 2: inventory.addInventory("Iron Ore");
case 3: inventory.addInventory("Steel Ore");
case 4: inventory.addInventory("Gold Ore");
case 5: inventory.addInventory("Copper Ore");
}
menu.start();
}