-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;
}
}
這是什麼意思*調用枚舉*?枚舉不是函數或方法。這是一個實例化一組固定的常數的一類。 FWIW,最好的做法是用-never-開關的情況下使用的塊,你自己枚舉或者其代碼,你可以修改。 – scottb
使用枚舉類型的四個可能的獲勝值。 – Burus
但輸出仍然必須顯示實際數量獎金 – Burus