[英]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.