我试图评估系统随机生成的方程式,其中两个整数存储在一个数组中,而运算符位于一个单独的字符串数组中。我想将答案与用户的答案进行比较。 这是我的代码:
Integer[] array;
String[] operators = {"+", "-", "*", "/"};
String question;
int operator = 0;
public void generateSum(){
for (int x = 0; x < 2; x++) {
Random randomNumber = new Random(); //creating random object
int number = randomNumber.nextInt(100) + 1;
Random randomOperator = new Random();
operator = randomOperator.nextInt(3);
array[x] = (number);
}
question = array[0].toString() + operators[operator] + array[1].toString() + "=";
TextView txt = findViewById(R.id.txtQuestion);
txt.setText(question);
}
答案 0 :(得分:0)
您可以调用此函数并将整数数组和运算符作为参数传递,然后您将获得操作的结果:
public int result(int[]array, int operator){
switch(operator){
case 0: // addition
return array[0]+array[1];
break;
case 1: // subtraction
return array[0]-array[1];
break;
case 2: // multiplication
return array[0]*array[1];
break;
case 3: // division - result rounded up to integer
return array[0]/array[1];
break;
default: // this shouldn't happen
return 0;
}
}
然后您可以将用户给出的答案与计算结果进行比较。
顺便说一下,你的数组应该是int []而不是Integer []。 int是表示整数的基本类型,Integer是具有许多静态函数和一个int字段的类。如果您有兴趣,可以查看这篇关于int和Integer之间差异的文章:
答案 1 :(得分:0)
如果您的界面看起来像这样:
INNER JOIN
所以不是String []操作符,而是你有Operator []操作符。
你的循环将独立于你的实现,你只需要:
var ans2 = from ta in tableA
join tb in tableB on ta.ShipId equals tb.ShipId
join tc in tableC on tb.PostageId equals tc.PostageId
where tc.PostageCode == "Package" && ta.MailId == "Specification"
select new { ta, tb, tc };
现在,你如何实现操作方法取决于你,它可能是4个不同的类实现Operator,或者它可能是实现Operator的枚举,或者它可能是一个单独的类,如果用#构造它会有不同的行为34 +#34;或者&#34; - &#34;传入。
好的部分是你可以改变&#34; Operaton&#34;实现与其余逻辑完全分开。理解这两部分也会更容易。
例如,一个班级,&#34;加&#34;可以这样实现:
interface Operator {
public String getView();
public int operate(int v1, int v2);
}
实现像这样的4个类是蛋糕。你当然可以做更多的事情(比如Lambda,或者实现getView()的基类,所以你的子类只需要实现操作()...)
(注意,在我的第二个代码块中,从&#34开始;&#34; +是一个技巧#34;开始&#34;作为一个字符串,它消除了对.toString()的需要数组[0]并使线的长度不那么尴尬)