首页 > 解决方案 > How to get my Java 'if' statement to work?

问题描述

I am very new to learning Java and currently I am working on a program that lets me fight the computer based on simple stats that I have assigned us and a random number to function as a dice roll. I recognize that there may be numerous other problems with my code, but the main issue I am trying to resolve is the "Syntax error on tokens, delete these tokens" on line 84 and the "Syntax error, insert "}" to complete Statement" on line 77.

I don't see what the issue is. What am I doing wrong? Both issues are listed near the bottom of my code in comments next to their corresponding lines.

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

标签: javaif-statementwhile-loopsyntax-error

解决方案


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

循环将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();
    }
}

推荐阅读