所以我的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);
答案 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[]
。
要获得随机获胜者,只需使用Random
类nextInt(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;
}