私が持っているのは、ユーザーの名、姓、および過去 1 か月間の毎日のクイズに正しく答えた回数が記載された Excel スプレッドシートです。私がやりたいのは、ユーザーが正解した質問ごとに 1 回のエントリーを獲得する抽選システムに基づいて勝者を選ぶことです。Java でこれを行う方法はありますが、可能であれば Excel で行いたいと思います。説明に役立つように、Java コードを以下に示します。
public static void main(String[] args) throws FileNotFoundException {
File file = new File("TriviaParticipantsList.txt");
Scanner scanner = new Scanner(file);
int x = 0;
int j = 0;
int i = 0;
while(scanner.hasNextLine())
{
String line = scanner.nextLine();
Scanner scan = new Scanner(line);
i = scan.nextInt();
String name = scan.nextLine();
if(line.charAt(0)==0)
{
//do nothing if no questions were answered
}
else
{
for(j=0; j<i; j++)
{
System.out.print(j+x); //Print out "ticket number"
System.out.println(" " + name); //Print out owner name of ticket
}
}
x=x+i;
}
scanner.close();
System.out.println(x); //Verify correct number of entries
int winner = (int) (Math.random()*x); //Select random number based on number of entries
System.out.println(winner); //Display value, look through list to find who number belongs to!
}
どのような助けでも大歓迎です!
答え1
(「試していない」という意味で)正解の累積合計と乱数の検索を組み合わせるとうまくいくかもしれないと想像できます。
Name | Correct | Sum
P1 3 3
P2 2 5
P3 4 9
乱数を含むセルを作成し、再計算をトリガーするボタンや、乱数の数式をセルに入力するボタンなどを作成します。
すると、たとえば 4 番を引いた場合は、「P2」を返す検索を実行できるはずです。編集: 正しい値を返す方法については、検索関数のヘルプを確認してください。希望どおりに実行できると思います。それ以外の場合は、ヘルパー列を使用して回避する必要があるかもしれません。
もちろん、乱数は 1 から累積合計の最大値までの範囲でなければなりません。
それが何らかの助けになれば幸いです ;-)