繁体   English   中英

不知道为什么带字符串的if语句不起作用

[英]Not sure why this if statement with string isn't working

我正在尝试制作一个基本的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语句中得到了一些东西。

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

更具体地说,它将读取缓冲区直到到达分隔符为止,分隔符默认为空格( ' ' )。

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

如果需要整个输入行,请使用nextLine()

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

应该是String question = input.nextLine();

使用此代码

String question = input.nextLine();

代替

String question = input.next();

这是由于Scanner Class的next()方法引起的。 因此,如果您输入“我会中彩票吗?”,那么question变量仅包含“ Will”。 它只能容纳一个字符串,因此,nextLine()方法用于容纳String,直到行不结束为止。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM