Java 一类三个

Java 一类三个,java,methods,boolean,if-statement,Java,Methods,Boolean,If Statement,我正在编写一个名为isThreeOfAKind()的方法来分析5个整数的值。 此方法应返回布尔值。 我不知道如何把它转换成代码,这样它就能知道5个整数中是否有3个是相等的 该程序的一些背景是,它在开始时生成5个新的随机数,这些随机数被分配给整数。比如我有 public YahtzeeRoll(){ int input; for (int i=5;i <= 5; i++){ input = rangen.nextInt(5) + 1; die1

我正在编写一个名为isThreeOfAKind()的方法来分析5个整数的值。 此方法应返回布尔值。 我不知道如何把它转换成代码,这样它就能知道5个整数中是否有3个是相等的

该程序的一些背景是,它在开始时生成5个新的随机数,这些随机数被分配给整数。比如我有

public YahtzeeRoll(){
    int input;
    for (int i=5;i <= 5; i++){
        input = rangen.nextInt(5) + 1;
        die1 = input;
        input = rangen.nextInt(5) + 1;
        die2 = input;
        input = rangen.nextInt(5) + 1;
        die3 = input;
        input = rangen.nextInt(5) + 1;
        die4 = input;
        input = rangen.nextInt(5) + 1;
        die5 = input;
    }

我想可能会使用if语句,如果它满足if语句的要求,它将返回true,然后else语句将返回false,但我不确定如何比较这5个整数,然后为其编写代码。感谢您的帮助

好的,一个可读的解决方案,没有数组、集合、开关和其他有用的东西;)希望你很快学会剩下的

public class YahtzeeRoll {

    public static void main(final String[] args) {
        YahtzeeRoll app = new YahtzeeRoll();
        System.out.println(app.isThreeOfAKind());
    }

    private boolean isThreeOfAKind() {
        // inspect the dice
        evaluate(die1);
        evaluate(die2);
        evaluate(die3);
        evaluate(die4);
        evaluate(die5);

        // now inspect the results
        if (val1 >= 3) return true;
        if (val2 >= 3) return true;
        if (val3 >= 3) return true;
        if (val4 >= 3) return true;
        if (val5 >= 3) return true;
        if (val6 >= 3) return true;

        return false;
    }

    private void evaluate(int die) {
        if (die == 1) val1++; 
        if (die == 2) val2++; 
        if (die == 3) val3++; 
        if (die == 4) val4++; 
        if (die == 5) val5++; 
        if (die == 6) val6++; 
    }

    int die1, die2, die3, die4, die5;
    int val1, val2, val3, val4, val5, val6;
    Random rangen = new Random();

    public YahtzeeRoll() {
        int input;
        for (int i = 0; i < 5; i++){
            input = rangen.nextInt(5) + 1;
            die1 = input;
            input = rangen.nextInt(5) + 1;
            die2 = input;
            input = rangen.nextInt(5) + 1;
            die3 = input;
            input = rangen.nextInt(5) + 1;
            die4 = input;
            input = rangen.nextInt(5) + 1;
            die5 = input;
        }
    }

}
公共类YahtzeeRoll{
公共静态void main(最终字符串[]args){
YahtzeeRoll app=新的YahtzeeRoll();
System.out.println(app.isThreeOfAKind());
}
私有布尔值isThreeOfAKind(){
//检查骰子
评价(die1);
评价(die2);
评价(die3);
评价(die4);
评价(5);
//现在检查结果
如果(val1>=3)返回true;
如果(val2>=3)返回true;
如果(val3>=3)返回true;
如果(val4>=3)返回true;
如果(val5>=3)返回true;
如果(val6>=3)返回true;
返回false;
}
私有void求值(int-die){
如果(die==1)val1++;
如果(die==2)val2++;
如果(die==3)val3++;
如果(die==4)val4++;
如果(die==5)val5++;
如果(die==6)val6++;
}
int die1、die2、die3、die4、die5;
int val1,val2,val3,val4,val5,val6;
Random range n=新的Random();
公共YahtzeeRoll(){
int输入;
对于(int i=0;i<5;i++){
输入=范围nextInt(5)+1;
die1=输入;
输入=范围nextInt(5)+1;
die2=输入;
输入=范围nextInt(5)+1;
die3=输入;
输入=范围nextInt(5)+1;
die4=输入;
输入=范围nextInt(5)+1;
die5=输入;
}
}
}

是时候向一个新概念问好了:数组:)

publicyahtzeeroll(){
int输入;

int[]dice=new int[5];//如果你用你的5个骰子做了一个
字符串,例如
“25326”
,你可以使用
StringUtils
来计算每个数字的出现次数

int ones = StringUtils.countMatches(diceString, "1");
int twos = StringUtils.countMatches(diceString, "2");
int threes = StringUtils.countMatches(diceString, "3");
int fours = StringUtils.countMatches(diceString, "4");
int fives = StringUtils.countMatches(diceString, "5");
int sixes = StringUtils.countMatches(diceString, "6");
如果其中任何一个是3,那么就有三个相同的

return ones==3 || twos==3 || threes==3 || fours==3 || fives==3 || sixes==3;
这很简单

public Boolean isThreeOfAKind(){

    int input;
    int[] dice = new int[5];  // <- declares and initializes an array
    for (int i=5;i <= 5; i++){
        input = rangen.nextInt(5) + 1;
        dice[i] = input;      // <- set the i'th die value to input
    }
     java.util.Arrays.sort(dice); //sort the array
     for(int i=0;i<dice.length-3;i++)
     {
       if(dice[i]==dice[i+1] ? dice[i+1]==dice[i+2] : false)
        {
           return true;
         }
     }
     return false;
}
public Boolean isThreeOfAKind(){
int输入;

int[]dice=new int[5];//啊,我忘了在我原来的帖子中添加内容,我们还没有在课堂上学习数组,我想如果我们使用数组,他不会接受的:(不使用数组有什么帮助吗?谢谢您的快速响应!没有数组?嗯,也没有集合,对吗?已经允许使用开关箱了?没有集合,没有开关..如果我最终使用了该数组(我想我可能不得不这样做)我会让循环循环5次而不是只循环一次吗?或者它会给我5个不同的随机整数吗?而且,请不要告诉我,你不允许将参数传递给方法:D到你的问题:你将使用一个循环来初始化五个骰子,这样它将循环五次。
die1
现在是
dice[0]
(数组是从零开始的!)(啊,谢谢,你的循环不正确。我编辑了我的答案,我从0数到4)
return ones==3 || twos==3 || threes==3 || fours==3 || fives==3 || sixes==3;
public Boolean isThreeOfAKind(){

    int input;
    int[] dice = new int[5];  // <- declares and initializes an array
    for (int i=5;i <= 5; i++){
        input = rangen.nextInt(5) + 1;
        dice[i] = input;      // <- set the i'th die value to input
    }
     java.util.Arrays.sort(dice); //sort the array
     for(int i=0;i<dice.length-3;i++)
     {
       if(dice[i]==dice[i+1] ? dice[i+1]==dice[i+2] : false)
        {
           return true;
         }
     }
     return false;
}
private static int[] rollDice(int[] die) {
    Random rand = new Random();
    die[0] = 1 + rand.nextInt(6);
    die[1] = 1 + rand.nextInt(6);
    die[2] = 1 + rand.nextInt(6);
    die[3] = 1 + rand.nextInt(6);
    die[4] = 1 + rand.nextInt(6);
    Arrays.sort(die);

    return die;
}

private static boolean isThreeOfAKind() {
    int[] die = new int[5];
    rollDice(die);

    return die[0] == die[2] || die[1] == die[3] || die[2] == die[4];

}