如何使我的Java“ if”语句起作用?

时间:2018-10-21 17:09:15

标签: java if-statement while-loop syntax-error

我对Java的学习非常陌生,目前我正在开发一个程序,该程序可以让我根据分配给我们的简单统计数据和一个随机数作为掷骰子来与计算机战斗。我知道我的代码可能还有许多其他问题,但是我要解决的主要问题是第84行的“令牌语法错误,删除这些令牌”和“语法错误,插入“}”以完成语句“在第77行。

我看不出问题所在。我究竟做错了什么?这两个问题均在代码底部附近的相应行旁的注释中列出。

import java.util.Scanner;
import java.util.Random;

public class Fight {

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);

    System.out.println("Enter your name");
        String you = keyboard.next();
        int youWounds = 1;
        int youTough = 4;
        int youAttack = 1;
        int youWS = 4;
        int youAS = 3;

        String Comp = "Bad Guy";
        int compWounds = 1;
        int compTough = 4;
        int compAttack = 1;
        int compWS = 4;
        int compAS = 3;

    System.out.println(you + ", do you want to FIGHT?!?!?");
    System.out.println("Yes / No?");

    String inputString = keyboard.next();       

    if (inputString.equalsIgnoreCase("Yes")) {
        System.out.println("FIGHT!!!!");
        while (youWounds > 0 && compWounds > 0) {

            int youRan = new Random().nextInt(6)+1; // this is where you roll to hit 
            System.out.println(you + " rolls " + youRan +" to hit");

            if (youRan >= 7-youWS) { // this is the logic for roll to hit 
                System.out.println(you +" hit");

                int youRanTW = new Random().nextInt(6)+1; // this is where you check to see if your hit wounds 
                System.out.println(you + " rolls " + youRanTW +" to wound");
                if (youRanTW > compTough) { // this is the logic for roll to wound
                    System.out.println(you+" wounds"+Comp);
                    compWounds = compWounds - 1; // this is where comp loses a wound
                    if (compWounds <= 0) { // this is the logic for wound loss
                        System.out.println(Comp+" dies!!!");
                    } else {
                        System.out.println("But, "+Comp+" fights on!");
                    }
                } else {
                    System.out.println(you=" does not wound");
                }
            } else { 
                System.out.println(you +" misses");
            }

            int compRan = new Random().nextInt(6)+1;
            System.out.println(Comp+" rolls " + compRan + " to hit");

            if (compRan >= 7-compWS) { // this is the logic for roll to hit 
                System.out.println(Comp +" hit");                       
                int compRanTW = new Random().nextInt(6)+1; // this is where you check to see if your hit wounds 
                System.out.println(Comp + " rolls " + compRanTW +" to wound");
                if (compRanTW > youTough) { // this is the logic for roll to wound
                    System.out.println(Comp+" wounds"+you);
                    youWounds = youWounds - 1; // this is where you loses a wound
                    if (youWounds <= 0) { // this is the logic for wound loss
                        System.out.println(you+" dies!!!");
                    } else {
                        System.out.println("But, "+you+" fights on!");
                    }
                } else {
                    System.out.println(Comp=" does not wound");
                }                   
            } else {
                System.out.println(Comp +" misses");
            }
        } else { // this is wher I get "Syntax error, insert "}" to complete Statement". The "}" is underlined in red on my screen
            if (youWounds <=0){
                System.out.println(Comp+" WINS!!!!");
            } else {
                System.out.println(you+" WINS!!!!");
            }
        }
    } else { // this is where i get "Syntax error on tokens, delete these tokens". it wants me to delete "} else".
        System.out.println(you + " you are a looser!!!!!!!!");
    }
    keyboard.close();
    }
}

1 个答案:

答案 0 :(得分:0)

程序流程存在一些问题,但是当前的问题是您正在尝试在else循环中使用while。这是不可能或不必要的。

while循环将继续直到满足定义的条件。一旦发生这种情况,while循环就会结束,并执行下一行代码。

因此,请从else {循环结束处删除while。然后您可以评估结果。

这是已更正的代码,带有一些注释以显示在何处删除内容:

import java.util.Random;
import java.util.Scanner;

public class Fight {

    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);

        System.out.println("Enter your name");
        String you = keyboard.next();
        int youWounds = 1;
        int youTough = 4;
        int youAttack = 1;
        int youWS = 4;
        int youAS = 3;

        String Comp = "Bad Guy";
        int compWounds = 1;
        int compTough = 4;
        int compAttack = 1;
        int compWS = 4;
        int compAS = 3;

        System.out.println(you + ", do you want to FIGHT?!?!?");
        System.out.println("Yes / No?");

        String inputString = keyboard.next();

        if (inputString.equalsIgnoreCase("Yes")) {
            System.out.println("FIGHT!!!!");
            while (youWounds > 0 && compWounds > 0) {

                int youRan = new Random().nextInt(6) + 1; // this is where you roll to hit
                System.out.println(you + " rolls " + youRan + " to hit");

                if (youRan >= 7 - youWS) { // this is the logic for roll to hit
                    System.out.println(you + " hit");

                    int youRanTW = new Random().nextInt(6) + 1; // this is where you check to see if your hit wounds
                    System.out.println(you + " rolls " + youRanTW + " to wound");
                    if (youRanTW > compTough) { // this is the logic for roll to wound
                        System.out.println(you + " wounds" + Comp);
                        compWounds = compWounds - 1; // this is where comp loses a wound
                        if (compWounds <= 0) { // this is the logic for wound loss
                            System.out.println(Comp + " dies!!!");
                        } else {
                            System.out.println("But, " + Comp + " fights on!");
                        }
                    } else {
                        System.out.println(you = " does not wound");
                    }
                } else {
                    System.out.println(you + " misses");
                }

                int compRan = new Random().nextInt(6) + 1;
                System.out.println(Comp + " rolls " + compRan + " to hit");

                if (compRan >= 7 - compWS) { // this is the logic for roll to hit
                    System.out.println(Comp + " hit");
                    int compRanTW = new Random().nextInt(6) + 1; // this is where you check to see if your hit wounds
                    System.out.println(Comp + " rolls " + compRanTW + " to wound");
                    if (compRanTW > youTough) { // this is the logic for roll to wound
                        System.out.println(Comp + " wounds" + you);
                        youWounds = youWounds - 1; // this is where you loses a wound
                        if (youWounds <= 0) { // this is the logic for wound loss
                            System.out.println(you + " dies!!!");
                        } else {
                            System.out.println("But, " + you + " fights on!");
                        }
                    } else {
                        System.out.println(Comp = " does not wound");
                    }
                } else {
                    System.out.println(Comp + " misses");
                }
            }  // REMOVE THE ELSE AND BRACKET
            if (youWounds <= 0) {
                System.out.println(Comp + " WINS!!!!");
            } else {
                System.out.println(you + " WINS!!!!");
            }
            // REMOVE THIS BRACKET
        } else { // this is where i get "Syntax error on tokens, delete these tokens". it wants me to delete "} else".
            System.out.println(you + " you are a looser!!!!!!!!");
        }
        keyboard.close();
    }
}