当循环被跳过时

时间:2019-07-16 00:49:00

标签: java while-loop

我正在尝试使用我的小技巧来制作一个非常简单的文字游戏。我无法使用while循环来工作。这可能是一个非常简单的解决方案,但我无法弄清楚。

我什至尝试了“ while(true)”,并创建一个布尔值并将其设置为true。如果删除while循环,则需要运行的部分可以正常运行。

我希望这种循环继续下去,直到敌人的健康状况低于1。对于我的经验不足,我感到非常抱歉,我是java和这个网站的新手。


import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;

public class MainGame {

    public static void main(String[] args)  throws Exception {

        AgeVerify AgeObject = new AgeVerify();
        AgeObject.ageV();


        // attacking, drinking health potion, updating variables

        // random enemy
        String goblin = new String("goblin");
        String skeleton = new String("skeleton");
        String witch = new String("witch");

        List<String> list = new ArrayList<String>();
        list.add(goblin);
        list.add(skeleton);
        list.add(witch);
        RandomEnemy obj = new RandomEnemy();
        for(int i = 0; i < 1;) {

        // ints/ player
        int HPPOTINC = 25;
        int HPPOTRM = 5;
        int updatedHPPOTRM = 0;
        int PlayerHealth = 100;
        Random ran = new Random();
        int SwordDMG = ran.nextInt(12);
        String enemy = ran.toString();
        SwordDMG += 5;
        int eaction = 0;
        int enemyupdatedhealth = 100;
        int enemyhealth = 1;
        int enemydmg = 0;
        int updatedhealth = 0;
        // monsters
        int goblinHP = 25;
            int goblinDMG = ran.nextInt(10);
            goblinDMG += 5;
        int skeletonHP = 35;
            int skeletonDMG = ran.nextInt(15);
            skeletonDMG += 8;
        int witchHP = 50;
            int witchDMG = ran.nextInt(30);
            witchDMG += 20;

        // automated text/ assigning
        String autoA = new String("1-Attack\n2-Drink Health Potion\n3-Run Away ");
        String auto = new String("1- Wander\n2- view stats\n3- exit game");
        String autoW = new String("You have wandered and found a ");
        Scanner autoi = new Scanner(System.in);
        int autoint = 0;

        //game
        System.out.println("What is your name?");
        Scanner scanN = new Scanner(System.in);
        String name = scanN.nextLine();
        System.out.println(""
                + "Hello, " + name + "!");
        System.out.println("Would you like to start?\n1- Yes! 2- Exit.");
            int YN = scanN.nextInt();
            if (YN == 2) {
                System.exit(0);
            }
            jump:
        TimeUnit.MILLISECONDS.sleep(500);
        System.out.println("Hello, " + name + " please select an action!");
        System.out.println(auto);
        autoint = autoi.nextInt();
        if (autoint == 2) {
            System.out.println("Health potions remaining: " + HPPOTRM );
                System.out.println("Health points: " + PlayerHealth + "\n");
                TimeUnit.SECONDS.sleep(2);
            } else if (autoint == 3) {
                System.out.println("Thanks for playing!");
                TimeUnit.SECONDS.sleep(2);
                    System.exit(0);
                }
        if (autoint == 1) {
            System.out.println(autoW + obj.getRandomList(list) + "!\n");
            TimeUnit.MICROSECONDS.sleep(500);
            System.out.println(autoA);
            eaction = scanN.nextInt();
                if (obj.getRandomList(list) == goblin); {
                enemyhealth = goblinHP;
                enemydmg = goblinDMG;
                    if (obj.getRandomList(list) == skeleton); {
                    enemyhealth = skeletonHP;
                    enemydmg = skeletonDMG;
                        if (obj.getRandomList(list) == witch); {
                        enemyhealth = witchHP;
                        enemydmg = witchDMG;
                        }
                if (eaction == 1); {
                    enemyupdatedhealth = 5;
                    while(enemyupdatedhealth > 1); 
                    {
                    enemyupdatedhealth = (enemyhealth - SwordDMG);
                    System.out.println("You have attacked dealing " + SwordDMG + ". The " + obj.getRandomList(list) + " has " + enemyupdatedhealth + " health remaining");
                    }
                }```

1 个答案:

答案 0 :(得分:-1)

我认为您应该在String enemy = obj.getRandomList(list)之后创建一个变量if (autoint == 1) 因为当您稍后执行此操作时 if (obj.getRandomList(list) == goblin)(实际上您在其中应使用removed的分号) 它可能会返回另一个敌人。

如果我认错了,这里是固定的if (autoint == 1),请纠正我。

if (autoint == 1) {
    String enemy = obj.getRandomList(list) ;
    System.out.println(autoW + enemy + "!\n");
    TimeUnit.MICROSECONDS.sleep(500);
    System.out.println(autoA);
    eaction = scanN.nextInt();

//actions depending on the enemy
    if (enemy == goblin) {
        enemyhealth = goblinHP;
        enemydmg = goblinDMG;
    } else  if (enemy == skeleton) {
        enemyhealth = skeletonHP;
        enemydmg = skeletonDMG;
     }else if (enemy == witch) {
         enemyhealth = witchHP;
         enemydmg = witchDMG;
     }
//action if attack
     if (eaction == 1){
         enemyupdatedhealth = 5;
         while(enemyupdatedhealth > 1) {
             enemyupdatedhealth = (enemyhealth - SwordDMG);
             System.out.println("You have attacked dealing " + SwordDMG + ". The " + obj.getRandomList(list) + " has " + enemyupdatedhealth + " health remaining");
          }
    }

当我输入内容时,我发现您遇到了严重的问题;和{}。该修补程序的while循环应该没有问题。 我坚持要您告诉我,如果我说正确的功能是否正确,因为我会说西班牙语,也许是我做错了方法。