对象的一个​​实例正在接管每个实例

时间:2016-01-19 06:28:59

标签: java object instances

我试图创建一个乐透,你必须在数据文件中读取并将读入的数字与通过控制台给出的中奖数字相匹配,我的问题是在我读到的for循环中球员数字,它读得很好,我甚至做了一个

 system.out.print(ticketList.get(i).getNumbers()[j]+" "); 

检查数字是否正确,它们是什么,但当我在for循环之外执行相同的代码行时,我将一个故障单的实例添加到arraylist

 ticketList.add(new Ticket(Players[i],ticketnumbers));`

这一切都被创建的最后一个实例票据所取代,但是奇怪的部分是,它唯一的玩家数量已经被占用,而不是玩家的名字,所以那真正让我失望的是,我'我已经坐了一会儿试图寻找东西,但到目前为止我已经空了,任何帮助都会受到赞赏!

我想说其余的代码有效,因为如果我把获胜的数字作为最后一个人的数字他赢得了乐透lol。我只知道当我尝试匹配数字数组时,它只使用最后一个人的数字而不是每个人的个别数字,所以这就是为什么那段代码不起作用。

public class Lottery{

static ArrayList<Ticket> ticketList = new ArrayList(); 

public static void scanFile() throws FileNotFoundException 
{
    String fileName;
    int[] WinningNumbers = new int[6];
    Scanner scan = new Scanner(System.in);

    System.out.println("enter a string");
    fileName = scan.nextLine();
    System.out.println("Enter the winning Lottery Numbers");
    for(int i =0; i<WinningNumbers.length;i++)
    {
        WinningNumbers[i] = scan.nextInt();
    }
    scan.close();

    int NumberofTickets;
    File file = new File(fileName);
    Scanner scanInput = new Scanner(file);
    NumberofTickets = scanInput.nextInt();
    scanInput.nextLine();

    String[] PlayersName = new String[NumberofTickets];
    int[] ticketnumbers = new int[6];

    for(int i=0; i < NumberofTickets;i++)
    {
        scanInput.nextLine();
        PlayersName[i] = scanInput.nextLine();
        scanInput.nextLine();
        for(int j = 0 ; j<6;j++)
        {
            ticketnumbers[j] = scanInput.nextInt();

        }

        if(i != NumberofTickets-1)
        scanInput.nextLine();

        ticketList.add(new Ticket(PlayersName[i],ticketnumbers));
        for(int j = 0 ; j<6;j++)
        {   
            System.out.print(ticketList.get(i).getNumbers()[j]+" ");
            }
    }
    for(int i=0; i < NumberofTickets;i++)
    {
        for(int j = 0 ; j<6;j++)
        {   
            System.out.print(ticketList.get(i).getNumbers()[j]+" ");
            }
    }
    checkTickets(WinningNumbers,NumberofTickets);
    scanInput.close();
}


public static void checkTickets(int[] winningNumbers, int NumberofTickets)
{

    int[] winnersMatchedNumbers = new int[6];
    for(int i =0; i<NumberofTickets; i++)
    {
        int counter = 0;
            if(winningNumbers[j] == ticketList.get(i).getNumbers()[j])
            {
                counter = counter+1;

            }
        }
        winnersMatchedNumbers[i] = counter;

    }

    Winners(winnersMatchedNumbers,NumberofTickets);
}
public static void Winners(int[] matchedNumbers, int NumberofTickets)
{
    for(int i = 0; i<NumberofTickets;i++)
    {
        System.out.println(ticketList.get(i).getTicketName()+ " matched "+ matchedNumbers[i]+" and won "+ ticketList.get(i).getWinnings(matchedNumbers[i]));
    }
}


public static void main(String[] args) {
    // TODO Auto-generated method stub
    try {
        scanFile();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


}

}

我正在使用的另一个班级是

public class Ticket 
{
   private String ticketName;
   private int[] personNumber = new int[6];

public Ticket(String Name,int[] ticketNumbers)
{   
     ticketName = Name;
     personNumber = ticketNumbers;  
}
public String getTicketName()
{
    return ticketName;
}

public int[] getNumbers()
{
    return personNumber;
}
public int getWinnings(int count)
{
    int winningsAmount;
    switch(count)
    {
    case 3:  winningsAmount = 10;
                break;
    case 4:     winningsAmount = 100;
                break;
    case 5:     winningsAmount = 10000;
                break;
    case 6: winningsAmount = 1000000;
                break;
    default: winningsAmount = 0;
                break;
    }
    return winningsAmount;
}
}

0 个答案:

没有答案