我想添加一个随机运算符,这样我就可以随机添加/减去/乘/除多个变量。下面的代码不起作用。我认为这是因为随机生成的运算符是一个实际上具有值的char,因此它被添加而不是用作运算符。无论如何,我是新来的,任何帮助都会非常感谢!
class ClassA{
public static void main(String[] args){
ClassB x = new ClassB();
int a=1,b=2,c=3,d=4;
int answer;
//Trying to achieve
//answer = a (+,-,*,/) b (+,-,*,/) c (+,-,*,/) d
//i.e
answer = a+x.randomOperator()+b+x.randomOperator()+c+x.randomOperator()+d;
System.out.println("answer="+answer);
}
}
我在另一个类中生成随机运算符符号。
import java.util.Random;
public class ClassB{
public char randomOperator(){
Random rv = new Random();
int apples = rv.nextInt(3);
char operator;
switch (apples)
{
case 1:
operator = '+';
break;
case 2:
operator = '-';
break;
case 3:
operator = '*';
break;
default:
operator = '/';
break;
}
return operator;
}
}
我还认为我应该补充一点,我试图为多个数字做这个,而两个数字很好,我添加的数字越多,它就越复杂,所以我无法真正写出每个组合。也许这不能做,但我想我会问!谢谢!
答案 0 :(得分:4)
由于'+'
只是一个char
并且除了值本身之外没有任何其他含义,因此您无法执行您要执行的操作。它无法动态转换为代码。
我想到的更简单的解决方案就是:
interface Operation {
int eval(int a, int b);
}
class Addition {
int eval(int a, int b) { return a + b; }
}
class Subtraction {
int eval(int a, int b) { return a - b; }
}
...
Operation[] operations = new Operation[]{new Addition(), new Subtraction(), ..};
int executeRandom(int a, int b) {
return operations[random.nextInt(operations.length)].eval(a,b);
}
答案 1 :(得分:2)
您可能希望执行以下操作:
Random randomInteger = new Random();
switch(randomInteger.Next(0, 4)) // Grab a random integer between [0, 4)
{
case 0: // Add
return a + b;
case 1: // Subtract
return a - b;
case 2: // Multiply
return a * b;
case 3: // Divide
return a / b;
}
而不是你现在正在做什么。