在 log 方法中使用 void 方法

using void methods in log method

MainActivity class:

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

Game class:

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

错误是:'+ 运算符不能应用于 java.lang.String,void

根据给定答案用户的专业知识,我已经这样做了。

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

错误:缺少 return 语句

void 关键字不是对象或变量,它所做的只是指定方法不 return 任何东西。所以下一行意味着该函数将 return void (即什么都没有):

public void doSomething() {}

因此,使用方法Log.i()打印nothing是不可能的。此方法需要两个 String 对象,它可以打印到 logcat。您可以使用 int 的唯一原因是 Java 处理 String 连接的方式;当使用 + 运算符时,它会自动将任何原始类型(booleanintfloat 等)转换为 String


Log 方法需要 两个 String 个对象的原因只是为了保持 logcat 中的易读性。第一个参数是一个 TAG 变量,通常是调用该方法的 Class 的名称。这通常是通过在每个 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 一个可打印的结果,那么您必须 return 除了 void 之外的其他东西。 String、原始类型或可以使用 toString() 方法打印的 Object