Java Android studio:三位数的数字不计入计数++;

Java Android studio:三位数的数字不计入计数++;,java,android,Java,Android,出于练习目的,我正在构建一个braintrainer应用程序。看起来是这样的: 你可以点击你认为正确的号码。每次点击一个数字,右上角的计数器将增加一个。如果您单击了正确的数字,它旁边的计数器也将增加1 我的问题是: 如果正确答案由两位数字组成。两个计数器都将增加。但是,如果正确答案由3位数字组成。只有右上角的计数器将增加。跟踪某些值会生成以下日志: 以下是检查是否按下正确答案的代码: public void guessFunction(View view){ TextView gue

出于练习目的,我正在构建一个braintrainer应用程序。看起来是这样的:

你可以点击你认为正确的号码。每次点击一个数字,右上角的计数器将增加一个。如果您单击了正确的数字,它旁边的计数器也将增加1

我的问题是:

如果正确答案由两位数字组成。两个计数器都将增加。但是,如果正确答案由3位数字组成。只有右上角的计数器将增加。跟踪某些值会生成以下日志:

以下是检查是否按下正确答案的代码:

public void guessFunction(View view){
    TextView guessView = (TextView) view;
    String buttonText = guessView.getText().toString();
    Log.i("correctAnswer: ", String.valueOf(correctAnswer));
    Log.i("buttonText: ", buttonText);

    if (buttonText == String.valueOf(correctAnswer)){
        correctCount++;
        TextView correctText = (TextView) findViewById(R.id.correctText);
        correctText.setText(String.valueOf(correctCount));
    }
    Log.i("count: ", String.valueOf(correctCount));


    shuffleFunction();
}
如果需要更多的代码样本,请告诉我

if (buttonText.equals(String.valueOf(correctAnswer)){ ... }
通过放置
object==otherObject
可以询问两个对象的标识,它们是否是同一个实例(由两个变量引用)。通过放置
object.equals(otherObject)
可以询问两个不同对象的相等性,即两个对象在某个方面是否相等(在
equals()
方法中实现)

在Java中,您几乎总是希望将
String
s与String类的
equals()
方法进行比较。在您的例子中,很明显您正在比较两个单独的对象(您刚刚用
String
类的静态
valueOf
方法创建了第二个
String
);因此,您需要使用
equals()

通过放置
object==otherObject
可以询问两个对象的标识,它们是否是同一个实例(由两个变量引用)。通过放置
object.equals(otherObject)
可以询问两个不同对象的相等性,即两个对象在某个方面是否相等(在
equals()
方法中实现)

在Java中,您几乎总是希望将
String
s与String类的
equals()
方法进行比较。在您的例子中,很明显您正在比较两个单独的对象(您刚刚用
String
类的静态
valueOf
方法创建了第二个
String
);因此,您需要使用
equals()

这是错误的

if (buttonText == String.valueOf(correctAnswer))
不要使用
==
来比较Java中的字符串。使用
等于

这是错误的

if (buttonText == String.valueOf(correctAnswer))

不要使用
==
来比较Java中的字符串。请使用
equals

请添加有关您尝试执行的操作的更多信息。您需要更多关于代码方面的信息还是关于应用程序功能方面的信息?应用程序功能方面的信息?您的意思是说您没有进入if条件语句吗?当您单击正确的答案时,if语句总是到达。但是,当答案存在于三个字符中时,它不会增加正确答案的数量。所以像20、56和74这样的数字会增加正确答案的数量。但是像123这样的数字,142和172将不会请添加更多关于您尝试DoDoDo的信息您需要更多信息代码方面的信息或关于应用程序功能方面的信息?应用程序功能方面的信息您的意思是说您没有进入if条件语句吗?当您单击正确的答案时,if语句总是到达。但是,当答案存在于三个字符中时,它不会增加正确答案的数量。所以像20、56和74这样的数字会增加正确答案的数量。但是像123、142和172这样的数字是行不通的!但是我不明白为什么
==
不能从字符串中读出三位数,这是关于身份和平等之间的区别。在OOP中,如果比较对象,您通常希望看到两个不同的对象是否具有相同的特征(
等于
)。只有当您想检查两个对象是否为同一实例时,才可以使用
=
对它们进行比较。顺便说一句,我的答案是第一个!这管用!但是我不明白为什么
==
不能从字符串中读出三位数,这是关于身份和平等之间的区别。在OOP中,如果比较对象,您通常希望看到两个不同的对象是否具有相同的特征(
等于
)。只有当您想检查两个对象是否为同一实例时,才可以使用
=
对它们进行比较。顺便说一句,我的答案是第一个!