Java 如何随机选择操作员?
尝试选取随机数,然后将它们相加、相乘或相除。Java 如何随机选择操作员?,java,Java,尝试选取随机数,然后将它们相加、相乘或相除。int solution=operators[x](a、b)我意识到这是垃圾。是否存在从数组中随机选取一个函数(方法?)然后输入整数的方法 我知道我可以用if-else这样的语句 如果x=1,则添加 如果x=2,则相乘,以此类推 但我希望有一种更复杂的方法 谢谢这些最简单的方法是使用开关语句。假设静态方法: public class Operator{ public int add(int a, int b){ return a
int solution=operators[x](a、b)代码>我意识到这是垃圾。是否存在从数组中随机选取一个函数(方法?)然后输入整数的方法
我知道我可以用if-else这样的语句
如果x=1,则添加
如果x=2,则相乘,以此类推
但我希望有一种更复杂的方法
谢谢这些最简单的方法是使用开关
语句。假设静态方法:
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);
或一系列条件运算符:
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();
}
“聪明”的方法是使用lambda表达式
int solution =
x==0 ? add(a, b) :
x==1 ? multiply(a, b) :
x==2 ? subtract(a, b) :
? divide(a, b) ;
或者,enum
可以同时为您提供名称和运算符。我认为您不必担心此类代码的复杂性。记住接吻原则。我更多的意思是短而不是长=)注意:您的操作符
界面有一个标准对应项:。也许值得用它来代替?好的。这只是一个建议,您现在也可以在开关箱中使用屈服特性。@AndyTurner有。但这其中的数量是有限的。这里我更喜欢一个特定的界面。@AmanChhabra或新表单switch
label。我必须确定,但是的,不是14中的预览功能。但实际上,您可能还需要一个名称,这需要一个传统的开关。@HenryGarrett您可以在解决方案
旁边为名称
变量赋值它不必是final
,但它确实确保变量只分配一次。请注意,此代码永远不会选择divide分支。
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);
import java.util.Random;
public class generateRandom{
public static void main(String args[])
{
// create instance of Random class
Random rand = new Random();
// Generate random integers in range 0 to 3
int result = rand.nextInt(4);
switch (result)
{
case 0:
//Java code for add(...)
;
case 1:
//Java code for multiply(...)
;
case 2:
//Java code for minus(...)
;
case 3:
//Java code for divide(...)
;
default:
//Java code what for ever you want
;
}
}
}