2016-01-20 29 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) 
相關問題