java - 使用随机运算符处理多个变量

标签 java random operator-keyword

我想添加一个随机运算符,这样我就可以随机添加/减去/乘/除多个变量。下面的代码不起作用。我认为这是因为随机生成的运算符是一个实际上具有值的字符,因此它被添加而不是用作运算符。不管怎样,我是新手,任何帮助都会非常感谢!

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/

相关文章:

java - EditText 按需小部件

java - JAX-WS 服务的构造函数未调用

javascript - 一段代码看不懂

random - 随机选择一组推特用户的好方法是什么?

php - 调用百分比的随机函数?

c++ - 运算符重载和命名空间

java - 从 long 到 int 的可能有损转换,JAVA

java - InnoDB 数据库锁定会阻塞线程

c# - 有没有办法为重载运算符调用基方法? C#

c++ - 在一个类上重载 ostream << 并输出另一个类的数据