不知道为什么带字符串的if语句不能正常工作

时间:2017-01-18 12:06:32

标签: java if-statement

我试图制作一个基本的8球计划,并让它全部工作,但我想尝试改变它,所以如果人们问某些问题,有一个预定义的答案。

package Main;

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

public class eightBall {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        System.out.println("Ask a yes or no question");

        String question = input.next();

        double rnd = Math.random();
        int random = (int)(rnd*10);
        int numberOfChoices = 5;

        if(question.equalsIgnoreCase("Will i win the lottery?")){
            System.out.println("The almigty 8 ball can not tell you this answer.");
        }else{
            switch(random % numberOfChoices){


            case 0:
                System.out.println("No");
                break;
            case 1:
                System.out.println("Yes");
                break;
            case 2:
                System.out.println("Maybe");
                break;
            case 3:
                System.out.println("Definitely");
                break;
            case 4:
                System.out.println("Definitely Not");
                break;

            }
        }


    }

}

我不确定为什么我的if声明无法正常工作,因为如果我运行并询问"我会赢得彩票吗?",我从那个switch语句中得到一些东西。

3 个答案:

答案 0 :(得分:8)

next()会返回一个单词,而不是整行。

更具体地说,它会读取缓冲区,直到它到达分隔符,默认情况下是一个空格(' ')。

您最终会获得"Will"而不是"Will i win the lottery?"

如果您想要整行输入,请使用nextLine()

如果您认为某些内容无法正常运行,请尝试打印或使用调试器。

答案 1 :(得分:0)

应为String question = input.nextLine();

答案 2 :(得分:0)

使用此代码

String question = input.nextLine();

而不是

String question = input.next();

这是因为Scanner Class的next()方法。 所以,如果你输入“我会赢得彩票吗?”,question变量只保留“Will”。它只能包含一个字符串,因此,nextLine()方法用于保存String,直到行不结束。