我正在创建一个有四种可能结果的老虎机。如果有两个匹配,则打印message2;三场比赛,message3打印;四场比赛,留言4打印。
我理解并非所有代码都是高效的,但我试图解决的是压缩(或替换)我的嵌套if语句。你会怎么做的?
import java.util.Scanner ;
import java.util.Random ;
/**
*Description: Slot machine simulator.
*
* @author KO
*/
public class SlotMachine {
public static void main(String [] args) {
//delcaring variables
int repeat = 0 ;
//welcoming
System.out.println("Welcome to the slot machine sim!") ;
//loop for slot machine
do {
//declaring variables
double bet = 0 ;
int i = 0 ;
int select = 0 ;
String message0 = null ;
String message2 = null ;
String message3 = null ;
String message4 = null ;
String[] outcome = new String[4] ;
String[] possible = {"CHERRIES", "ORANGES", "PLUMS", "BARS" } ;
Random random = new Random() ;
Scanner keyboard = new Scanner(System.in) ;
//ask for bet
System.out.println("\nHow much are you betting?") ;
bet = keyboard.nextDouble() ;
//set messages
message0 = "\n\nZero matches. You won $0." ;
message2 = "\n\nTwo matches. You won $" + (bet * 2) ;
message3 = "\n\nThree matches. You won $" + (bet * 3) ;
message4 = "\n\nFour matches. You won $" + (bet * 3) ;
//creating white space
System.out.println(" ") ;
//randomizer
for (i = 0 ; i < 4 ; i++) {
select = random.nextInt(possible.length) ;
outcome[i] = possible[select] ;
}
//print outcome
for (i = 0 ; i < 4 ; i++) {
System.out.print(outcome[i] + " ") ;
}
//compare
if (outcome[0].equals(outcome[1])) {
if (outcome[0].equals(outcome[2])) {
if (outcome[0].equals(outcome[3])) {
System.out.println(message4);
} else {
System.out.println(message3) ;
}
} else if (outcome[0].equals(outcome[3])) {
System.out.print(message3) ;
} else {
System.out.println(message2) ;
}
} else if (outcome[0].equals(outcome[2])) {
if (outcome[0].equals(outcome[3])) {
System.out.println(message3) ;
} else {
System.out.println(message2) ;
}
} else if (outcome[0].equals(outcome[3])) {
System.out.println(message2) ;
} else if (outcome[1].equals(outcome[2])) {
if (outcome[1].equals(outcome[3])) {
System.out.print(message3) ;
} else {
System.out.println(message2) ;
}
} else if (outcome[1].equals(outcome[3])) {
System.out.println(message2);
} else if (outcome[2].equals(outcome[3])) {
System.out.println(message2) ;
} else {
System.out.println(message0) ;
}
//restart application
System.out.println("\n\nWould you like to play again? (1 or 2)"
+ "\n1. Yes"
+ "\n2. No") ;
repeat = keyboard.nextInt() ;
} while (repeat == 1) ;
}
}
答案 0 :(得分:0)
您可以创建包含多个相等值的Map,如下所示:
Map<String, Integer> result = new HashMap<String, Integer>();
int maxRes = 0;
for(o in outcome) {
if(!result.contains(o)) {
result.put(o, 1);
} else {
result.put(o, result.get(o)+1);
}
maxRes = Math.max(maxRes, result.get(o));
}
// TODO: output according to maxRes value