我想添加一个随机运算符,这样我就可以随机添加/减去/乘/除多个变量。下面的代码不起作用。我认为这是因为随机生成的运算符是一个实际上具有值的字符,因此它被添加而不是用作运算符。不管怎样,我是新手,任何帮助都会非常感谢!
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;
}
}
我还认为我应该添加我正在尝试对多个数字执行此操作,虽然两个数字很好,但我添加的数字越多,它就会变得更加复杂,因此我无法真正写出每个组合。也许这无法做到,但我想我会问!谢谢!
最佳答案
您无法执行您想要执行的操作,因为 '+'
只是一个 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);
}
关于java - 使用随机运算符处理多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24976723/