0

我正在尝试制作一个随机生成的数组字,我没有发现这段代码有任何问题,但它只是没有运行,当有一个随机生成的数字时,它不会向我显示数组的字。我的代码有什么问题?

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");
        }

        }

    }
4

4 回答 4

4

使用字符串等于方法来比较字符串而不是 ==

替换以下条件

if(roll == name)

if(roll.equals(name))

String equals 比较字符串的内容,而 == 检查两个引用是否指向相同的内存对象。

阅读这篇相关文章以了解有关字符串比较的更多信息:Java String.equals 与 ==


不相关,但不是以下链:

if (result == 0){
   System.out.println(me[0]);

考虑更接近于:

System.out.println(me[result]);
于 2013-07-16T17:52:55.430 回答
2

roll==name将始终返回false,因为在这种情况下,您正在检查它们是否引用相同的内存位置。

改为使用if (roll.equals(name))

于 2013-07-16T17:55:55.683 回答
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 语句。

于 2013-07-16T17:57:15.060 回答
0

在java中你必须使用equals函数来比较String

roll.equals(name)

只需查看此以获取更多详细信息,如何在 Java 中比较字符串?

于 2013-07-16T18:06:06.507 回答