比较数组条目

时间:2013-06-04 19:57:23

标签: java arrays

所以我的java编程非常生疏。我正在尝试创建一个假设的公司彩票,每个员工只能输入一次。然后将随机生成一个名称,宣布获胜者。我现在还不确定我的订单是否正确。任何有关这方面的帮助将不胜感激。我查了一些东西,我相信它会让它变得更糟。

        // instance variables
        final int NUM_PARTIC = 7;  // number of workers participating
        String input;  // holds each name
        int i, j;

        // Create array to hold number of particpants.
        String[] nameArray = new String[NUM_PARTIC];
        // Create a Random class object.
        Random stakes = new Random();

        for(i = 0; i < nameArray.length; i++)
        {
            // Prompt participant for name.
            input = JOptionPane.showInputDialog(null, "Please enter your"
                    + " name into our database:", "Entry", JOptionPane.QUESTION_MESSAGE);
            nameArray[i] = input;  // Store name in namesArray[]

            // Prompt next participant for name
            input = JOptionPane.showInputDialog(null, "Please enter your name into our"
                    + " database:", "Entry", JOptionPane.QUESTION_MESSAGE);
            nameArray[i] = input;  // Store name in namesArray[]

            for(j = i + 1; j < nameArray.length; ++j)
            {
                JOptionPane.showMessageDialog(null, "Sorry, this name is already "
                        + "in our database", "Invalid", JOptionPane.ERROR_MESSAGE);
                input = JOptionPane.showInputDialog(null, "Please enter your name into our"
                        + " database:", "Entry", JOptionPane.QUESTION_MESSAGE);
            }

            // Display winner
            JOptionPane.showMessageDialog(null, "The winner for today's raffle "
                    + "is: " + nameArray[i], "Winner",
                    JOptionPane.WARNING_MESSAGE);

            // Exit program
            System.exit(0);

4 个答案:

答案 0 :(得分:1)

您认为您在下面的代码中做了什么?它肯定不会搜索以前的条目。请自言自语,说出你在做什么,然后说出你想做什么,然后比较这两个答案。

for(j = i + 1; j < nameArray.length; ++j)
{
  JOptionPane.showMessageDialog(null, "Sorry, this name is already "
                + "in our database", "Invalid", JOptionPane.ERROR_MESSAGE);
  input = JOptionPane.showInputDialog(null, "Please enter your name into our"
                    + " database:", "Entry", JOptionPane.QUESTION_MESSAGE);
}

此外:只需使用List<String>代替String[]

要获得随机获胜者,只需使用RandomnextInt(nameArray.length)方法。

答案 1 :(得分:0)

使用java.util.Random课程从nameArray

中随机选择获胜者

Random rand=new Random()

int winnerIndex=rand.nextInt(nameArray.length);

然后

JOptionPane.showMessageDialog(null, "The winner for today's raffle "
                    + "is: " + nameArray[winnerIndex], "Winner",
                    JOptionPane.WARNING_MESSAGE);

答案 2 :(得分:0)

所有java集合都有contains方法,该方法在该集合中搜索给定项目。这比搜索数组要好得多。

在这种情况下,最好的是Java集合Set允许对同一元素进行O(1)(也称为非常快速的搜索),或者如果您希望能够使用List检索数组之类的任意元素。无论哪种方式,找到元素的方法都是为你完成的。

如果必须在Array中执行此操作。您将需要遍历数组。

public static boolean contains(String[] array, String search){
    for (String s: array){
        if (s.equals(search))
            return true;
    }
    return false;
}

答案 3 :(得分:0)

使用random从给定值中选择随机值

 String randomLotteryWinner() 

{
   String []array={"person1","person2","person3","person4","person5"};

   String Winner=array[(int)(Math.random()*array.length)];

   return Winner;
}