简而言之,我有一个选择随机操作并生成两个随机数的方法,然后将它们作为一个字符串创建一个表达式并更改一个textview以显示该表达式如下所示:
public String Nov2()
{
String[] ops = new String[] {" + ", " - ", " * ", " / "};
int i = rand.nextInt(4-0) + 0;
String op1 = ops[i];
int novnum1 = rand.nextInt(101-1) + 1;
int novnum2 = rand.nextInt(101-1) + 1;
String nov2Exp = novnum1 + op1 + novnum2 + " = ";
setContentView(R.layout.gameview);
TextView display = (TextView) findViewById(R.id.exp);
display.setText(nov2Exp);
return nov2Exp;
}
我有第二种方法,根据按下的按钮,将数字作为字符串放入第二个文本视图中:
@Override
public void onClick(View c) {
switch (c.getId())
{
case R.id.keypad_1:
TextView prs1 = (TextView) findViewById(R.id.ans);
if (prs1.getText().equals("?"))
{
prs1.setText("1");
}
else
{
prs1.append("1");
}
break;
我需要的是,当用户按下另一个按钮时,将计算表达式的答案并与答案文本视图的内容进行比较,我已经对数学表达式解析进行了一些研究,并且它对我来说太复杂了。实行。我是否需要以某种方式从我的方法返回不同类型的mutliple变量或完全错误?任何人都可以帮助我吗?
答案 0 :(得分:4)
您可以定义自定义数据类型:
public class Result {
private String result1;
private int result2;
// etc.
}
让你的方法返回这种类型的对象。
编辑:
你可以这样做:
public int Nov2()
{
char[] ops = new char[] {'+', '-', '*', '/'};
int i = rand.nextInt(4-0) + 0;
char op1 = ops[i];
int novnum1 = rand.nextInt(101-1) + 1;
int novnum2 = rand.nextInt(101-1) + 1;
int result = 0;
switch(op1) {
case '+': result = novnum1 + novnum2; break;
case '-': result = novnum1 - novnum2; break;
case '*': result = novnum1 * novnum2; break;
case '/': result = novnum1 / novnum2; break;
}
String nov2Exp = novnum1 + " " + op1 + " " + novnum2 + " = ";
setContentView(R.layout.gameview);
TextView display = (TextView) findViewById(R.id.exp);
display.setText(nov2Exp);
return result;
}
此方法将为您生成一个新表达式,将其放在屏幕上然后返回结果。您可以将其存储在某个位置,当用户单击该按钮时,将其与输入进行比较。
答案 1 :(得分:2)
方法可以有多次返回
是
不同类型?
这取决于。仅当方法返回的所有类型都是声明的返回类型的实例时。也就是说,该方法返回具有相同类型或声明的返回类型的子类型的对象。
但是,我不知道这与问题的主体有什么关系。答案 2 :(得分:0)
观察:从查看你的Nov2()方法,我建议将逻辑拆分为单独的方法,因为它正在执行计算和更新显示。看起来试图用一种方法对我做太多,这可能导致混乱。