调用方法时,my方法中的“return”不返回值

时间:2016-07-03 21:13:14

标签: java

刚刚完成了我的Java类的作业;它是用一个方法创建一个类,当给定两个字符串时,它会在第一个字符串中搜索第二个字符串并计算它找到的次数。

这是重要的一点:

for (int count = 0; count < l1; count++) {
    if (one.charAt(count) == two.charAt(0)) {
        for (int count2 = 0; count2 < l2; count2++) {
            if (one.charAt(count) != two.charAt(count2)) {
                break;
            }
            count++;
            if (count2 == l2 - 1) {
                twoCount++;
            }
        }
    }
}
System.out.println("There are " + twoCount + " \"" + two + "\"");
return twoCount;

我在最后包含了System.out,因为当我在另一个程序中调用该方法时,return实际上并没有返回任何内容,因此:

test.stringFind(one, two);

输出为:

----jGRASP exec: java StringSearchRun

有2个“爱”

----jGRASP: operation complete.

请注意我的System.out中只有一行?我在类中的方法被定义为int,以及twoCount变量。那么我犯了什么愚蠢的错误?

1 个答案:

答案 0 :(得分:3)

如果您的方法返回类型为int,那么您必须对返回的值执行某些操作。通过调用方法而不执行任何其他操作,没有任何反应,因为

A)无法检索返回值或

B)没有对返回值进行任何操作

为什么会这样?想一想,执行test.stringFind(one,two);后返回的值在哪里?当被调用时,该方法返回一个立即被垃圾收集的值,因为值的范围仅在方法调用中。因此,一旦完成调用,该值将被丢弃,因为它不会离开方法的范围。所以要解决这个问题,要么将其存储在另一个变量中,要么在表达式中使用它。以下是您在main方法中可以使用的一些示例,

int result = test.stringFind(one,two);

System.out.println(test.stringFind(one,two));