2016-07-03 106 views
-3

剛剛完成了我的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「love 「

----jGRASP: operation complete. 

請注意,我的System.out只有一條線嗎?我在班級中的方法定義爲int以及twoCount變量。那麼我犯了什麼愚蠢的錯誤?

+4

實際上,你需要使用* *返回值:'的System.out.println(測試。 stringFind(一,二));'。 – hexafraction

回答

3

如果您的方法返回類型爲int,那麼您必須對返回的值執行一些操作。由剛調用的方法和別的什麼都不做,什麼都不會發生,因爲有兩種

A)沒辦法檢索返回值或

B)四大皆空的返回值

爲什麼會這樣?想想看,在執行test.stringFind(one,two);之後,值被返回到哪裏?由自身調用的方法返回一個立即被垃圾回收的值,因爲該值的範圍只在方法調用中。因此,一旦完成調用,值將被丟棄,因爲它不會離開方法的範圍。所以要解決這個問題,可以將它存儲在另一個變量中,或者在表達式中使用它。以下是你可以在你的主要方法,用它做一些例子,

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

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

哇,謝謝。我覺得真的很愚蠢之後,一哈哈 –

+0

沒問題,如果你發現答案有幫助,那麼不要忘記將其標記爲已接受。快樂的編碼! –