Я продолжаю получать "Битва. java: 11: ошибка: незаконное начало выражения" Heelp - PullRequest
0 голосов
/ 09 февраля 2020

Я пытаюсь сражаться с двумя монстрами и вернуть победителя монстров. И я попытался включить некоторое время l oop, в котором монстры бьют друг друга

public class Bat{

    public static void main (String [] args){
        monster s1 = new monster ["cat"];
        monster s2 = new monster ["dog"];

        s1.Strength = 10;
        s2.Strenght = 98;
    }
    public fight(monster m1, monster m2){
        int m1 = s1;
        int m2 = s2;
        int attack = s1;
        int attack2 = s2;

        if (m1 >= m2)
            return m1;
        else if(m2 >= m1)
            return m2;

        while ( m1 > m2 || m2 > m1) { 
            s1.Damn(attack2);
            s2.Damn(attack);              
        } 
    }  
}

Ответы [ 2 ]

1 голос
/ 09 февраля 2020

Одной из ваших проблем является то, что вы предоставляете своей функции "fightToDeath" два объекта типа "монстр". Пока все в порядке. Но здесь все очень неправильно:

int m1 = s1;

Вы присваиваете объект-монстр (который был объявлен глобально и не является аргументом) целому числу. Я не знаю, чего вы пытаетесь достичь, но это может быть правильным для вас:

int m1Strength = m1.getStrength();
int m2Strength = m2.getStrength();

В вашем коде ваши аргументы в "fightToDeath" будут мгновенно перезаписаны. Как я написал, вы бы использовали своих монстров, которых вы дали в качестве аргумента, и получили их силу и присвоили эту силу локальному целому числу.

РЕДАКТИРОВАТЬ:

См. Этот код:

public class Battle{

    public static void main (String [] args){
        Monster s1 = new Monster("Demorgogon", 10);
        Monster s2 = new Monster("Godzilla", 98);

        fightToDeath(s1, s2);
    }

    public static void fightToDeath(Monster m1, Monster m2){
        int m1Strength = m1.getStrength();
        int m2Strength = m2.getStrength();
        int attack = 5;
        int attack2 = 2;          

        while (m1Strength > 0 && m2Strength > 0) {
            m1.oof(attack2);
            m1Strength -= attack2;
            m2.oof(attack);
            m2Strength -= attack;
        }

        if(m1.getStrength() == 0){
            System.out.println("Winner is: " + m2.getName() + " with " + 
                         m2.getStrength() + " live left!");
        } else {
            System.out.println("Winner is: " + m1.getName() + " with " + 
                         m1.getStrength() + " live left!");
        }
    }
}


public class Monster{
    int strength;
    String name;

    public Monster(String name, int strength){
        this.name = name;
        this.strength = strength;
    }

    public void setStrength(int newStrength){
        this.strength = newStrength;
    }

    public int getStrength(){
        return this.strength;
    }

    public void setName(String newName) {
        this.name = newName;
    }

    public String getName(){
        return this.name;
    }

    public void oof(int attackValue){
        this.strength -= attackValue;
    }
}
0 голосов
/ 09 февраля 2020

Вам не хватает скобки, закрывающей основной метод, а также вокруг блоков if / else.

...