0

所以我对我的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

4 回答 4

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

此外:只需使用 aList<String>而不是String[].

要获得随机获胜者,只需使用Random带有 itnextInt(nameArray.length)方法的类。

于 2013-06-04T20:04:19.420 回答
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);
于 2013-06-04T20:02:35.363 回答
0

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

在这种情况下,最好的是 Java 集合Set,它允许 O(1) (也就是非常快速的搜索)相同的元素,或者List如果您希望能够检索任意元素(如数组),则只使用 a 。无论哪种方式,查找元素的方法都已为您完成。

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

public static boolean contains(String[] array, String search){
    for (String s: array){
        if (s.equals(search))
            return true;
    }
    return false;
}
于 2013-06-04T20:03:22.733 回答
0

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

 String randomLotteryWinner() 

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

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

   return Winner;
}
于 2013-06-04T20:18:32.943 回答