0

Java プログラミングは初めてで、コードを修正する方法がわかりません。

007のゲームを作ってみました。ifステートメントを作成しましたが、ループしていません。-ループ!の each ステートメントの前にa を追加すると、無限ループが発生します。dowhile

プログラミングを修正するにはどうすればよいですか。

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

public class DoubleOSeven {

public static void main(String[] args) {

    System.out.println("Let's Play a game of 007 ");
    System.out.println("You can SHOOT, BLOCK, AND RELOAD");
    System.out.println("Both you and I start with one bullet");

    Scanner input = new Scanner(System.in);

    System.out.println("Let's Start, Enter (shoot, reload , or block) ");
    String INput = input.nextLine();

    //User and Computer ammo
    int Userammo = 1;
    int ammo = 1;

    //Creates a random number between 1 and 3
    Random rand = new Random();
    int  output = rand.nextInt(3) + 1;


    do{
    //User chooses shoot
    if(INput.equals("shoot")){
        Userammo --;
        System.out.println("You took a shot, Your ammo count is at: " + Userammo);

    //User chooses reload
    }else if (INput.equals("reload")){
        Userammo ++;
        System.out.println("You reloaded, Your ammo count is at: " + Userammo);

    //User chooses block    
    }else if(INput.equals("block")){
        System.out.println("You blocked, Your ammo count is at: " + Userammo);  

    //If random is 1 shoot
    }if(output == 1){
        ammo ++;
        System.out.println("I took a shot at you, My ammo count is at: " + ammo);

    //If random is 2 block
    }else if(output == 2){
        System.out.println("I blocked, My ammo count is at: " + ammo);

    //If random is 3 reload 
    }else if(output == 3){
        ammo ++;
        System.out.println("I reloaded, My ammo count is at: " + ammo);

    //If both User and Computer shoot
    }if(output ==  1 && INput == "shoot"){
        System.out.println("It's a tie you we both die");

    }
    }while((output == 3 && INput == "shoot") && (output == 1 && INput == "reload") && (output ==  1 && INput == "shoot"));

  }
}
4

4 に答える 4

2
while((output == 3 && INput == "shoot") && (output == 1 && INput == "reload") && (output ==  1 && INput == "shoot"));

する必要があります

while((output == 3 && INput.equals("shoot")) || (output == 1 && INput.equals("reload")) || (output ==  1 && INput.equals("shoot")));
于 2013-03-30T09:26:09.093 に答える
0

このループで評価される && ケースはすべて false になります。

たとえば、真の場合はすべて T であり、F の場合はすべて F です。

If T&&T&&T then yes we = T (the case for adding !)
If T&&F&&F then F
IF F&&T&&F then F
...
IF F&&F&&F then F

そのため、ループさせたい条件を再評価する必要があります。

私たちは探していますか

(output==3 && Input=="shoot") || (output==1 && input=="reload") || (output==1 && input=="shoot") 

次の反復を引き起こすには?

これは、それらのいずれかが T である場合、T を取得します。それらのすべてが F である場合、F を取得します。

于 2013-03-30T09:29:16.360 に答える
0

以下のようにあなたの条件に従って

while((output == 3 && INput == "shoot") && (output == 1 && INput == "reload") && (output ==  1 && INput == "shoot"));

ループは、3 つの条件が真の場合にのみ実行されます。

あなたはあなたの状態にいくつかの変更を加える必要があります

于 2013-03-30T09:27:45.100 に答える