gpt4 book ai didi

java - 如何随机选择运营商?

转载 作者:行者123 更新时间:2023-12-01 07:43:20 26 4
gpt4 key购买 nike

public class Operator{
public int add(int a, int b){
return a+b;
}
public int multiply(int a, int b){
return a*b;
}
public int minus(int a, int b){
return a-b;
}
public int divide(int a, int b){
return a/b;
}
}
int a = 1 + random.nextInt(19);
int b = 1 + random.nextInt(19);
int x = random.nextInt[2];
Operator[] operators = {add(),minus(),multiply()};
System.out.println("Question " + (i+1) +":\n " + "What is " + a + " operators[x] " + b + "?");
int answer = in.nextInt();
int solution = operators[x](a,b);

尝试选择随机数,然后将它们相加或相除。int Solution = Operator[x](a,b);我意识到这是垃圾。是否有从数组中随机选择一个函数(方法?)然后输入整数?

我知道我可以使用 if else 语句来做到这一点,例如如果 x=1 添加如果 x=2 相乘,依此类推但我希望有一种更复杂的方式谢谢

最佳答案

这些最简单的方法是 switch 语句。假设静态方法:

final int solution;
switch (x) {
case 0: solution = add(a, b); break;
case 1: solution = multiply(a, b); break;
case 2: solution = subtract(a, b); break;
case 3: solution = divide(a, b); break;
default: throw new Error();
}

或者条件运算符链:

int solution =
x==0 ? add(a, b) :
x==1 ? multiply(a, b) :
x==2 ? subtract(a, b) :
? divide(a, b) ;

“聪明”的方法是使用 lambda 表达式。

interface Operator {
int op(int a, int b);
}
Operator[] ops = {
(a, b) -> a + b,
(a, b) -> a * b,
(a, b) -> a - b,
(a, b) -> a / b,
};
// ...
int solution = ops[x].op(a,b);

或者,enum 可以同时为您提供名称和运算符。

关于java - 如何随机选择运营商?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60789453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com