2016-01-20 60 views
-1

我没有用枚举太多,但他们想在这个任务中使用,(即使你不需要它),但是我无法在那里我想打电话给使用枚举,我打电话从不同的类此开关的开关。枚举的开关,并返回结果到另一个类

我想要做的想法是,我使用计数器来计算乐透彩票和获奖乐透券之间匹配的数字,并基于该计数使用枚举作为使用枚举的开关语句作为整数。

package lotto; 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.ArrayList; 
import java.util.Scanner; 


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();       //scans file name which is default "input.txt" 

    System.out.println("Enter the winning Lottery Numbers"); 
    for(int i =0; i<WinningNumbers.length;i++) 
    { 
     WinningNumbers[i] = scan.nextInt();    //scans winning numbers from console input 
    } 
    scan.close();          //closes scanner to avoid leakage 

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

    NumberofTickets = scanInput.nextInt();    //scans number of tickets 
    scanInput.nextLine();        //skips white space 

    String[] PlayersFirstName = new String[NumberofTickets]; //creates array of players depending on how 
    //String[] PlayersLastName = new String[NumberofTickets]; //many tickets there are 
    for(int i=0; i < NumberofTickets;i++) 
    { 
     int[] ticketnumbers = new int[6];    //creates a new array for every individuals ticketholder's numbers 
     scanInput.nextLine();       //skips white space 

     PlayersFirstName[i] = scanInput.nextLine();   //scans players names 
     //PlayersLastName[i] = 
     scanInput.nextLine();       //skips white space 

     for(int j = 0 ; j<6;j++) 
     { 
      ticketnumbers[j] = scanInput.nextInt();  //scans players numbers 
     } 
     if(i != NumberofTickets-1)      //fixes out of bounds when scanning file 
     scanInput.nextLine(); 

     ticketList.add(new Ticket(PlayersFirstName[i],ticketnumbers)); //adds ticket to a arrayList of tickets 
    } 
    checkTickets(WinningNumbers,NumberofTickets);  //calls method to check winning numbers 
    scanInput.close();         //to ticketholder numbers 
} 


public static void checkTickets(int[] winningNumbers, int NumberofTickets) 
{ 
int[] winnersMatchedNumbers = new int[NumberofTickets]; 

    for(int i =0; i<NumberofTickets; i++) 
    { 
    int counter = 0; 

    for(int j = 0; j < 6;j++)      //i use 3 for loops in order to check 1 winning 
    {            //number to every number on the ticketholders number array 
     for(int k = 0; k<6;k++)      //assuming that there are no duplicate numbers 
     { 
      if(winningNumbers[j] == ticketList.get(i).getNumbers()[k]) //checks if winning numbers matches numbers in ticketholders number array 
      { 
       counter++;       //counts everytime numbers are matched to winning numbers 
      } 
     } 
    } 
     winnersMatchedNumbers[i] = counter;   //puts counter into specific ticketholders array position 
    } 
    Winners(winnersMatchedNumbers,NumberofTickets); //calls method to print out winners! 
} 

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 $"+ Winner.getWinnings(matchedNumbers[i])); 

     if(matchedNumbers[i] == 3) 
      System.out.print(Winner.WINNER); 
     else if(matchedNumbers[i] == 4) 
      System.out.print(Winner.DECENTWINNER); 
     else if(matchedNumbers[i] == 5) 
      System.out.print(Winner.BIGWINNER); 
     else if(matchedNumbers[i] == 6) 
      System.out.print(Winner.JACKPOT); 
     else 
      System.out.print("0"); 
     System.out.println(); 
    } 
} 


public static void main(String[] args) { //Main method 
    // TODO Auto-generated method stub 
    try { 
     scanFile();       //calls scanFile method to begin scanning process 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 
} 
class Ticket { 

private String ticketName; 
private int[] personNumber = new int[6]; 

public Ticket(String Name,int[] ticketNumbers) //constructor of class Ticket 
{           //reads in a name and ticketnumber sent from scanFile() 
    ticketName = Name; 
    personNumber = ticketNumbers; 
} 
public String getTicketName() 
{ 
    return ticketName; 
} 

public int[] getNumbers() 
{ 
    return personNumber; 
} 


} 
enum Winner{ 

WINNER(3),DECENTWINNER(4),BIGWINNER(5),VERYBIGWINNER(6); 

private int winnerSize; 

Winner(int winnerSize){ 
    this.winnerSize = winnerSize; 
} 
public int getWinnerSize(){ 
    return winnerSize; 
} 
public int getWinnings(int count) 
    { 

     int winningsAmount; 
     switch(this)     //switch statement used to chose how much a person has won 
     {        //depedning on how many numbers they matched 
     case WINNER: winningsAmount = 10; 
        break; 
     case DECENTWINNER: winningsAmount = 100; 
        break; 
     case BIGWINNER: winningsAmount = 10000; 
        break; 
     case VERYBIGWINNER: winningsAmount = 1000000; 
        break; 
     default: winningsAmount = 0; 
        break; 
     } 
     return winningsAmount; 
    } 

} 
+0

这是什么意思*调用枚举*?枚举不是函数或方法。这是一个实例化一组固定的常数的一类。 FWIW,最好的做法是用-never-开关的情况下使用的块,你自己枚举或者其代码,你可以修改。 – scottb

+0

使用枚举类型的四个可能的获胜值。 – Burus

+0

但输出仍然必须显示实际数量奖金 – Burus

回答

0

这最终导致一切正常,谢谢大家帮助!

System.out.print(Winner.getWinnerWinnings(Winner.WINNER)); //this is called in the other class 

public static int getWinnerWinnings(Winner win){ 
    int winnings = getWinnings(win); 
    return winnings; 
} 
public static int getWinnings(Winner Win) 
    { 

     int winningsAmount; 
     switch(Win)