刚刚完成了我的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
变量。那么我犯了什么愚蠢的错误?
答案 0 :(得分:3)
如果您的方法返回类型为int
,那么您必须对返回的值执行某些操作。通过调用方法而不执行任何其他操作,没有任何反应,因为
A)无法检索返回值或
B)没有对返回值进行任何操作
为什么会这样?想一想,执行test.stringFind(one,two);
后返回的值在哪里?当被调用时,该方法返回一个立即被垃圾收集的值,因为值的范围仅在方法调用中。因此,一旦完成调用,该值将被丢弃,因为它不会离开方法的范围。所以要解决这个问题,要么将其存储在另一个变量中,要么在表达式中使用它。以下是您在main方法中可以使用的一些示例,
int result = test.stringFind(one,two);
或
System.out.println(test.stringFind(one,two));