Appel d'un entier dans un Booléen


La partie de mon code qui ne fonctionne pas

entrez la description de l'image ici

}else if(bossOne == 3){
        int bossOneHP = 70 + bossStat.nextInt(10)-5;
        int bossOneOP = 27 + bossStat.nextInt(10)-5;
        int bossOneBP = 12 + bossStat.nextInt(10)-5;
        String bossName = "Spartan King";
        waits();
        System.out.println("Your first enemy is the Spartan King.");
        System.out.println("It has a very powerful attack, lets hope you have enough health.");
    }

    boolean keepPlaying = true;
    while (keepPlaying){
        Scanner choice = new Scanner(System.in);
        System.out.println("Enter 1 to attack.");
        System.out.println("Enter 2 to block.");
        System.out.println("Enter 3 to exit the game.");
        int selection = choice.nextInt();
        if (selection == 1){
            waits();
            System.out.println("You attack.");
            System.out.println(bossOneHP == bossOneHP - (OP - bossOneBP));
        }else if(selection == 2){
            waits();
            System.out.println("You block.");
            System.out.println(HP == HP - (bossOneOP - BP));
        }else if(selection == 3){
            break;
        }
        if (bossHP == (0 || >0){
            System.out.println("Congratulations you won!");
            break;
        }
        if (HP == (0 || >0)){
            System.out.println("Sorry you lost.");
            break;
        }

J'ai besoin que les entiers soient appelés à la section. Ce code est pour la viande du jeu que je crée pour ma classe de programmation toute aide serait appréciée.

Author: Hovercraft Full Of Eels, 2016-01-25

2 answers

Vous voulez l'opérateur 'supérieur ou égal à': >=

if (bossHP >= 0){
    System.out.println("Congratulations you won!");
    break;
}
if (HP >= 0){
    System.out.println("Sorry you lost.");
    break;
}
 0
Author: Jason, 2016-01-25 01:58:57

{[6],} OK, donc je ne sais pas exactement ce qui est censé faire quoi, mais je vais essayer. Il semble que vous en avez un peu confus.

Par exemple:

    if (selection == 1){
        waits();
        System.out.println("You attack.");
        System.out.println(bossOneHP == bossOneHP - (OP - bossOneBP));
    }else if(selection == 2){

Dans ce code, vous semblez imprimer pour consoler une comparaison de la variable bossOneHP et bossOneHP - (OP - bossOneBP), ce qui, je pense, n'est pas ce que vous vouliez car l'instruction n'imprimerait true que si (OP-bossOneBP) était zéro (algèbre de base). Ce que je soupçonnais que vous vouliez:

    if (selection == 1){
        waits();
        System.out.println("You attack.");
        bossOneHP = bossOneHP - (OP - bossOneBP);
    }else if(selection == 2){

Cela définit la variable bossOneHP à lui-même moins (OP moins bossOneBP). Notez que vous pouvez également le faire comme ceci:

if (selection == 1){
        waits();
        System.out.println("You attack.");
        bossOneHP-= OP - bossOneBP;
    }else if(selection == 2){

Qui est plus rapide. - = définit une valeur à elle-même moins la valeur suivante par opposition à = qui la définit simplement à la nouvelle valeur. Aussi = = fait une comparaison renvoyant true si elles sont égales tandis que = définit une variable à une nouvelle valeur.

Deuxième problème:

if (bossHP == (0 || >0){

Je suppose que vous voulez activer l'instruction if si bossHP est inférieur ou égal à zéro. L'instruction / / est un opérateur booléen (It compare les deux entrées booléennes sur les côtés, qu'il s'agisse d'une variable ou d'une comparaison ou d'une fonction, et retourne une seule valeur booléenne true si l'entrée était vrai), et ne fonctionne pas comme le mot ou. Pour comparer deux nombres (dans ce cas, la variable bossHP et zéro), vous utilisez l'un des plusieurs opérateurs. Ils sont les suivants:

==  -returns true (which activates the if statement) if the numbers or objects (if they are the same instance, not if they contain equal values) on both sides are identical. 

<  -returns true if the left hand number is smaller than the right hand one (doesn't work on objects)

>  -returns true if the right hand number is smaller

<= -returns true if the left hand number is smaller or equal to the right hand number

>= -returns true if the right hand number is smaller or equal to the left hand number

!= -returns true if the numbers or objects do not equal each other (effective opposite of the == token)

!  -only takes one boolean on the right hand side and returns its opposite (this inverts the value essentially), if(!val) is equivalent and better to if(val == false)

Le code correct serait probablement quelque chose du type de:

    if (bossHP >= 0){
        System.out.println("Congratulations you won!");
        break;
    }

Aussi au lieu de faire la chose while(keepPlaying) vous pourrait également faire while (true) et exécuter une pause; commande lorsque 3 est entré

 0
Author: pop1040, 2016-01-25 02:19:59