2017-01-05 35 views
-8

MainActivity類:使用日誌方法空隙方法

Log.i("Game ends! ","" + object1.winner()+ object2.winner()); 

Game類:

public void winner() { 
    if(this.points!=0) { 
     Log.i("Winner is", this.objectName); 
    } 
} 

錯誤是:「+操作者可以不被應用於java.lang.String中,空隙

根據給定答案的用戶的專業知識,我已經完成了這項工作。

public String winner() { 
    if(this.points!=0) { 
     return this.name; 
    } 
} 

錯誤:缺少return語句

+0

解決方案非常簡單。做**不**記錄'gettermethod()'中的任何內容,而是返回應該打印的內容,並使用返回值如「Log.i(」存儲在給定對象中的數字「,」「+對象。gettermethod());' –

+0

你說,**但是我需要返回一些東西!和我返回的任何東西(0/etc)它也被打印在我不想要的日誌目錄中。該怎麼辦?**如果你不想打印任何東西,那就不要連接它來記錄。 –

+0

或簡單地創建getter方法返回類型字符串並返回「」;(**空字符串**) –

回答

0

void關鍵字是不是一個對象或一個變量,它的作用是指定一個方法不返回任何東西。所以下面的行表示該函數將返回void(即沒有):

public void doSomething() {} 

因此,使用該方法Log.i()打印沒什麼是不可能的。此方法需要兩個String對象,它可以將其打印到logcat。您可以使用int的唯一原因是Java處理String級聯的方式;當使用+運算符時,它會自動將任何基元類型(boolean,int,float等)轉換爲String


的原因Log方法預計 String對象僅僅是爲了維持logcat的易讀性。第一個參數應該是TAG變量,它通常是調用該方法的Class的名稱。這通常是通過創建每個類的靜態值來完成:

private static final String TAG = MyActivity.class.getSimpleName(); 

通過這種方式,您可以使用Log方法如下:

Log.i(TAG, "Log information…"); 

這將導致在寫入到一個更統一的消息logcat的。


因此,有了這些信息,問題依然存在;你想輸出到logcat中?

如果你只是想輸出,該方法被調用,較前(或後),只需撥打Log聲明的方法調用:

Log.i(TAG, "doSomething() called"); 
doSomething(); 

否則,如果你真的希望你的方法return可打印結果,那麼你必須返回void以外的東西。可以使用toString()方法打印的String,原始類型或Object

+0

我編輯了這個問題以顯示我真的想要做什麼。 – pluto20010

+0

@ user6177394,您的編輯對我的回答沒有影響。你看到的錯誤信息是說你不能連接'void';如果你希望他們打印某些東西,你的方法必須返回一些東西。 – Bryan

+0

做了你說的。使用String時缺少返回語句。 – pluto20010