-1

我对 java 语言很陌生,并尝试运行一个简单的基于文本的程序,一旦你按下 1 或 0,它将继续故事或停止故事。我想不通的是,如果我在下面运行这部分代码并且我选择了错误的答案,它会绕过我的 if 语句。

    package game;
import java.util.Scanner;
class chase {
public static void main (String args[]){

    int answer1;
    answer1 = 1;

    Scanner chase = new Scanner(System.in);

    System.out.println("You hear a noise form a house you walk by. What do you     do?");
    System.out.println("Press 1 to enter the house. Press 0 to run away like a panzy");

    chase.nextLine();

    if (answer1 == 1){
        System.out.println("Good Choice!");
        }else{
        System.out.println("You ran away and was crushed by a falling pig");
        System.out.println("Try again!");
    }

    }

}

我试图做的是,一旦你按下 1,它就会说“好选择!” 一旦你按下 0,它就会运行 else 语句。但每次我按 0 时,它都会显示“好选择!”

我不知道我做错了什么。请帮忙。

4

4 回答 4

6

问题在这里:

chase.nextLine();

您应该读入一个数字,answer1而不是仅仅读一行并将其丢弃:

answer1 = chase.nextInt();

这也将使您不再需要这answer1 = 1;条线。由于您只是忽略了您读入的数据行,这意味着您从未更改过 的值,因此无论您输入什么answer1,它总是如此。1

于 2013-06-30T02:28:27.407 回答
2

看起来您从未将输入分配给 answer1,并且由于它的初始值为 1,因此它始终为真。

于 2013-06-30T02:28:41.053 回答
2

您正在使用此行将 answer1 的值设置为 1:

answer1 = 1;

并且永远不要根据您的问题的输入来更改它。因此answer总是等于 1 并且你else永远都可以到达。

于 2013-06-30T02:29:22.700 回答
2

您以错误的方式使用 'chase' 变量,在这种情况下,不需要进行 'answer1' 初始化。

尝试这个。

answer1 = chase.nextInt();

然后像在代码中一样继续执行 if else 语句。

于 2013-06-30T02:29:32.607 回答