Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在log法中使用void法_Android_Android Logcat_Return Type - Fatal编程技术网

Android 在log法中使用void法

Android 在log法中使用void法,android,android-logcat,return-type,Android,Android Logcat,Return Type,在MainActivityclass中: Log.i("Game ends! ","" + object1.winner()+ object2.winner()); public void winner() { if(this.points!=0) { Log.i("Winner is", this.objectName); } } 在游戏中类: Log.i("Game ends! ","" + object1.winner()+ object2.winner

MainActivity
class中:

Log.i("Game ends! ","" + object1.winner()+ object2.winner());
public void winner() {
    if(this.points!=0) {
        Log.i("Winner is", this.objectName);
    }
}
游戏中
类:

Log.i("Game ends! ","" + object1.winner()+ object2.winner());
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语句关键字
void
不是对象或变量,它所做的只是指定方法不返回任何内容。因此,下一行表示函数将返回
void
(即nothing):

因此,不可能使用方法
Log.i()
不打印任何内容。此方法需要两个
String
对象,可以将它们打印到logcat。可以使用
int
的唯一原因是Java处理
字符串的方式;当使用
+
运算符时,它会自动将任何基元类型(
boolean
int
float
等)转换为
字符串


Log
方法需要两个
String
对象的原因只是为了在logcat中保持易读性。第一个参数是
标记
变量,它通常是调用该方法的
类的名称。这通常通过在每个类中创建一个静态值来实现:

private static final String TAG = MyActivity.class.getSimpleName();
通过这种方式,您可以使用
Log
方法,如下所示:

Log.i(TAG, "Log information…");
这将导致写入logcat的消息更加统一


因此,有了这些信息,问题依然存在;您试图向logcat输出什么

如果您只想输出调用了该方法,而不只是在方法调用之前(或之后)调用
Log
语句:

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

否则,如果您实际希望方法
返回可打印的结果,则必须返回除
void
之外的内容。可以使用
toString()
方法打印的
字符串
、基元类型或
对象

解决方案相当简单。不要在
gettermethod()
中记录任何内容,而是返回应该打印的内容,并使用该返回值,如
log.i(“存储在给定对象中的数字”,“object.gettermethod())你说了,但是我需要返回一些东西!无论我返回什么(0/etc),它也会打印在日志目录中,这是我不想要的。怎么办?如果您不想打印任何内容,那么就不要将其连接到日志中,或者简单地创建返回类型为String并返回“”的getter方法;(空字符串)^如果您可能不知道可以只使用
object.gettermethod()
作为一条语句,在不关心方法返回时调用方法?然后,该方法可以愉快地声明为返回
void
(并且,如果需要,将其自己的消息记录到logcat)。我编辑了该问题以显示我真正想要做的事情。@user6177394,您的编辑对我的回答没有影响。您看到的错误消息是,您无法连接
void
;如果你希望你的方法打印一些东西,那么你的方法必须返回一些东西。使用字符串时缺少返回语句。为什么它说缺少返回语句?@user6177394我假设您将
void
更改为另一种类型(
int
String
,等等);在这种情况下,您需要调用
return
[
int
String
,等等]来告诉方法调用时要返回什么。我建议您查看一些,以便了解函数如何工作。