一个方法可以有多个不同类型的返回吗?

时间:2012-03-04 14:01:34

标签: java android

简而言之,我有一个选择随机操作并生成两个随机数的方法,然后将它们作为一个字符串创建一个表达式并更改一个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变量或完全错误?任何人都可以帮助我吗?

enter image description here

3 个答案:

答案 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()方法,我建议将逻辑拆分为单独的方法,因为它正在执行计算和更新显示。看起来试图用一种方法对我做太多,这可能导致混乱。