我试图制作一个基本的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语句中得到一些东西。
答案 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,直到行不结束。