Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一个方法可以有不同类型的多个返回吗?_Java_Android - Fatal编程技术网

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

Java 一个方法可以有不同类型的多个返回吗?,java,android,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(

简而言之,我有一个方法,它选择一个随机操作并生成两个随机数,然后用它们创建一个表达式作为字符串,并更改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;
我需要的是,当用户按下另一个按钮时,表达式的答案将被计算出来,并与答案文本视图的内容进行比较。我对数学表达式解析做了一些研究,证明它太复杂了,我无法实现。我是否需要从我的方法返回不同类型的多变量,或者我完全错了?有人能帮我吗

一个方法可以有多个返回吗

不同类型的

视情况而定。仅当方法返回的所有类型都是声明的返回类型的实例时。也就是说,该方法返回与声明的返回类型具有相同类型或子类型的对象


不过,我看不出这与问题的主体有什么关系。

您可以定义自定义数据类型:

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;
}

此方法将生成一个新表达式,将其放在屏幕上,然后返回结果。您可以将其存储在某个位置,当用户单击按钮时,将其与输入进行比较。

观察:从查看您的Nov2()方法来看,我建议将逻辑拆分为单独的方法,因为它当前正在执行计算并更新显示。对我来说,似乎试图用一种方法做太多的事情,这可能会导致混乱

我想如果我真的算出了这个方法在方法本身中生成的表达式,但是这个方法返回了一个字符串,那么这个表达式的结果将是一个整数。你看到我的问题了吗?在这堂课里到底要做什么?我不明白这对我有什么帮助。@nexus490:你说你需要同时返回一个字符串和一个int,对吗?最终我需要做的是计算该方法生成的表达式,并将其与用户输入的内容进行比较,我不知道如何完成它,我想我要问的是返回多个数据类型是否是我需要的。我不明白返回多个类型与计算数学表达式有什么关系。您想同时返回结果和表达式的字符串吗?好吧,忘记多个返回类型,似乎是我误解了我需要做什么。我使用的第一种方法将生成一个随机数学表达式,例如“3+4=”作为字符串并将其放在文本视图中,第二种方法将根据用户按下的按钮将另一个字符串放在第二个文本视图中,例如“1”。当用户按下另一个按钮时,应用程序需要检查应答文本视图的内容是否与3+4(即7)的实际结果相同。