在if语句中循环

时间:2013-09-24 02:43:40

标签: java loops if-statement

我是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();
}

3 个答案:

答案 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();
}