随机数组字生成器

时间:2013-07-16 17:51:50

标签: java arrays random

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

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 个答案:

答案 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)

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

roll.equals(name)

请点击此处了解详情How do I compare strings in Java?