我正在尝试制作一个随机生成的数组字,我没有发现这个代码的任何问题,但它只是没有运行,它没有显示当有一个随机生成的数字时数组的单词。我的代码出了什么问题?
import java.util.Scanner;
import java.util.Random;
public class apples{
public static void main(String[] args){
Random dice = new Random();
Scanner scan = new Scanner(System.in);
String me[] = new String[5];
me[0] = "Wow";
me[1] = "LoL";
me[2] = "Jis, Ji";
me[3] = "Mes";
me[4] = "Jus";
System.out.println("Enter YES or NO: ");
String roll = scan.nextLine();
String name = "yes";
if(roll == name){
int result = dice.nextInt(5);
if(result == 0){
System.out.println(me[0]);
}else if(result == 1){
System.out.println(me[1]);
}else if(result == 2){
System.out.println(me[2]);
}else if(result == 3){
System.out.println(me[3]);
}else if(result == 4){
System.out.println(me[4]);
}
}else{
System.out.println("Bad");
}
}
}
答案 0 :(得分:4)
使用字符串equals方法比较字符串而不是==
替换以下条件
if(roll == name)
与
if(roll.equals(name))
String equals比较字符串的内容,而==检查两个引用是否指向相同的内存对象。
阅读此相关帖子,详细了解字符串比较:Java String.equals versus ==
不相关,但不是以下链:
if (result == 0){
System.out.println(me[0]);
考虑更接近的事情:
System.out.println(me[result]);
答案 1 :(得分:2)
roll==name
将始终返回false
,因为在这种情况下,您正在检查它们是否引用相同的内存位置。
改为使用if (roll.equals(name))
。
答案 2 :(得分:1)
另外,
if(roll.equals(name)){
int result = dice.nextInt(5);
if(result == 0){
System.out.println(me[0]);
}else if(result == 1){
System.out.println(me[1]);
}else if(result == 2){
System.out.println(me[2]);
}else if(result == 3){
System.out.println(me[3]);
}else if(result == 4){
System.out.println(me[4]);
}
}else{
System.out.println("Bad");
}
可以替换为:
if(roll.equals(name))
{
int result = dice.nextInt(5);
System.out.println(me[result]);
}
else
{
System.out.println("Bad");
}
减少冗余的IF语句。
答案 3 :(得分:0)