gpt4 book ai didi

java - 链接列表 getNext() 和 while(next!= null );问题

转载 作者:行者123 更新时间:2023-12-01 18:07:46 26 4
gpt4 key购买 nike

我对java相当陌生,希望有人能够帮助我。我正在尝试创建一个链接列表来比较中奖号码和玩家号码,因为您可以在我的彩票计划中使用不同的名称购买多张彩票。该程序可以工作,但它只输出最后一张票的结果,而不是全部。这与 matches() 方法中的代码有关,但我不确定单击抽奖号码时如何输出每个人的彩票结果。任何帮助将不胜感激。

import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JFrame;
import java.lang.Math.*;
import java.util.Scanner;

public class LOTTERY
{
Scanner keyboard = new Scanner(System.in);

private PLAYER pHead;

WINNINGNUMBERS win = new WINNINGNUMBERS();

public LOTTERY()
{
pHead = null;
}

public void welcome() {
JOptionPane.showMessageDialog(null," Welcome to the Lottery Game. Press Ok to Continue", "Lottery Game",JOptionPane.INFORMATION_MESSAGE);
}

public void StartUpmenu() {


Object[] options = {"Quit",
"How To Play",
"Buy Ticket"};
int n = JOptionPane.showOptionDialog(null,"Please select one of the following buttons: ","Lottery Game",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.PLAIN_MESSAGE,
null,
options,
options[2]);

if (n == 0) {
exitOptions();
} else if (n == 1) {
rules();
} else if (n == 2) {
enterPlayerDetails();
numOptionMenu();
displayPlayers();
}
}

public void rules() {
System.out.println("How To Play The Lottery Game:" + "\n" + "\n" +
"1. Enter Your Name" + "\n" + "2. Select 6 Of Your Own Numbers or Choose A Lucky Dip."
+ "\n" + "3. The Money You Win Will Be Revealed Based On The Amount Of Numbers You Matched" + "\n" + "\n" +
"1 Number - £2" + "\n" + "2 Numbers - £10" + "\n" + "3 Numbers - £30" + "\n" +
"4 Numbers - £140" + "\n" + "5 Numbers - £1,750" + "\n" + "6 Numbers - £1 million");

StartUpmenu();
}

public void enterPlayerDetails() {
PLAYER pNext;
System.out.println("Enter your Name : ");
String vName = keyboard.nextLine();
System.out.println("What age are you?");
int vAge = keyboard.nextInt();
keyboard.nextLine();

while (vAge < 16) {
System.out.println("Sorry, You have entered an invalid age. You must be 16 or above");
vAge = keyboard.nextInt();
keyboard.nextLine();
}

pNext = new PLAYER(vName,vAge,pHead);
pHead = pNext;
}

public void numOptionMenu() {
PLAYER currentPlayer = pHead;
Object[] options = { "Choose Your Own",
"Lucky Dip"};
int n = JOptionPane.showOptionDialog(null,"Please select one of the following buttons: ","Lottery Game",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.PLAIN_MESSAGE,
null,
options,
options[1]);

if (n == 0) {
currentPlayer.choose();
} else if (n == 1) {
currentPlayer.luckyDip();
}
}

public void drawNumbersMenu() {
PLAYER currentPlayer = pHead;
Object[] options = { "Quit",
"Draw Numbers",
"Buy Another Ticket"};
int n = JOptionPane.showOptionDialog(null,"Please select one of the following buttons: ","Lottery Game",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.PLAIN_MESSAGE,
null,
options,
options[2]);

if (n == 0) {
exitOptions();
} else if (n == 1) {
displayWinningNumbers();
matches();
playAgainMenu();
} else if (n == 2) {
enterPlayerDetails();
numOptionMenu();
displayPlayers();
drawNumbersMenu();
}
}

public void playAgainMenu() {
PLAYER currentPlayer = pHead;
Object[] options = { "Quit",
"Play Again"
};
int n = JOptionPane.showOptionDialog(null,"Please select one of the following buttons: ","Lottery Game",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.PLAIN_MESSAGE,
null,
options,
options[1]);

if (n == 0) {
exitOptions();
} else if (n == 1) {
runProg();
}
}

public void displayPlayers() {
PLAYER currentPlayer = pHead;
System.out.println("Name: " + currentPlayer.getName());
System.out.println("Age: " + currentPlayer.getAge());
currentPlayer.luckyDip();
currentPlayer.bubbleSort();
System.out.println("Your Numbers: ");

for (int i = 0; i < 6; i++) {
System.out.println(currentPlayer.getNumbers(i));
}
}

public void displayWinningNumbers() {
win.winningNumbers();
win.bubbleSort();
System.out.println("Winning Numbers: ");

for (int i = 0; i < 6; i++) {
System.out.println(win.getWinningNumbers(i));
}
}

public void matches() {
PLAYER currentPlayer = pHead;
PLAYER pNext;

do{
int count = 0;
PLAYER next = pNext;
for(int i = 0; i<6; i++) {
for(int j = 0; j< 6; j++) {
if (win.getWinningNumbers(j) == next.getNumbers(i)) {
count++;
}
}
}

if (count == 0) {
System.out.println("Unlucky " + currentPlayer.getName() + " you haven't won anything");
}
else if (count == 1) {
System.out.println("Congratulations " + currentPlayer.getName() + " you have won £2");
}
else if (count == 2) {
System.out.println("Congratulations " + currentPlayer.getName() + " you have won £10");
}
else if (count == 3) {
System.out.println("Congratulations " + currentPlayer.getName() + " you have won £30");
}
else if (count == 4) {
System.out.println("Congratulations " + currentPlayer.getName() + " you have won £140");
}
else if (count == 5) {
System.out.println("Congratulations " + currentPlayer.getName() + " you have won £1,750");
}
else if (count == 6) {
System.out.println("Congratulations " + currentPlayer.getName() + " you have won the jackpot of £1 million !!!");
}

next = next.getNext();

} while(next!= null );
}


public void exitOptions()
{
JOptionPane.showMessageDialog(null, "Thank you for Playing!", "End Game",JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}

public void runProg() {
welcome();
StartUpmenu();
drawNumbersMenu();
}

public static void main(String[] args) {
LOTTERY lottery = new LOTTERY();
lottery.runProg();
}
}

import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JFrame;
import java.lang.Math.*;
import java.util.Scanner;

public class PLAYER
{
private String vName;
private PLAYER pNext;
private int vAge;
private int numbers[];

public PLAYER(String n, int a, PLAYER p)
{
vName = n;
pNext = p;
vAge = a;
numbers = new int[6];
Random random = new Random();
}

public String getName() {
return vName;
}

public int getAge() {
return vAge;
}

public int getNumbers(int i){
return numbers[i];
}

public int getNext(int next) {
return next;
}

public void luckyDip() {
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 1; i < 51; i++)
{
list.add(new Integer (i));
}

Collections.shuffle(list);

for(int i = 0; i < 6; i++)
{
numbers[i] = (list.get(i));
}
}

public void choose() {

}

public void bubbleSort() {

for(int a = numbers.length; a > 0; a--){
for(int i = 0; i < a-1; i++) {
if(numbers[i] > numbers[i+1]) {
int temp = numbers[i+1];
numbers[i+1] = numbers[i];
numbers[i] = temp;
}
}
}
}
}

import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JFrame;
import java.lang.Math.*;
import java.util.Scanner;

public class WINNINGNUMBERS
{
private int wNumbers[];

public WINNINGNUMBERS() {
wNumbers = new int[6];
Random ran = new Random();
}

public void setWinningNumbers(int [] wNumbers){
this.wNumbers = wNumbers;
}

public int getWinningNumbers(int i){
return wNumbers[i];
}

public void winningNumbers() {
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 1; i < 51; i++)
{
list.add(new Integer (i));
}

Collections.shuffle(list);

for(int i = 0; i < 6; i++)
{
wNumbers[i] = (list.get(i));
}
}

public void bubbleSort() {
for(int a = wNumbers.length; a > 0; a--){
for(int i = 0; i < a-1; i++) {
if(wNumbers[i] > wNumbers[i+1]) {
int temp = wNumbers[i+1];
wNumbers[i+1] = wNumbers[i];
wNumbers[i] = temp;
}
}
}
setWinningNumbers(wNumbers);
}
}

`````````````````````````````````````````````````````````````````````````````````

最佳答案

您应该修复 PLAYER 中的 getNext 函数,以便它返回一个玩家对象,该对象可以分配给 Lottery 中的 matches() 函数中的下一个。

目前它有一个整数参数并返回一个整数,但你将它用作next = next.getNext() 在你的 matches() 中。

我认为这就是你想要的

public PLAYER getNext() {
return pNext;
}

编辑:为了简单起见,我省略了 if 语句。

public void matches() {
PLAYER currentPlayer = pHead;
// PLAYER pNext; remove this, since you are not using pNext in the if statments

do{
int count = 0;
// PLAYER next = pNext; also remove this for the same reason
for(int i = 0; i<6; i++) {
for(int j = 0; j< 6; j++) {
//check the winning numbers in currentPlayer instead of a null object pNext
if (win.getWinningNumbers(j) == currentPlayer.getNumbers(i)) {
count++;
}
}
}
// next = next.getNext(); remove for the same reason as above
// since you are using currentPlayer to check if the player wins, you shouldto modify current player
currentPlayer = currentPlayer.getNext();
} while(currentPlayer != null ); //check if currentPlayer is not null
}

关于java - 链接列表 getNext() 和 while(next!= null );问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60529759/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com