Java 字符串等于()不等于';行不通
这是一个我已经试着解决了三个小时的问题。 应用程序的工作原理: 我有一个txt文件中的数字列表(在资产中)。我正在逐行读取txt文件,并将TextView的文本设置为当前行。现在我必须在编辑文本中键入相同的数字。但是如果我比较EditText和当前行,应用程序会说它们不一样,尽管它们是一样的Java 字符串等于()不等于';行不通,java,android,string,integer,equals,Java,Android,String,Integer,Equals,这是一个我已经试着解决了三个小时的问题。 应用程序的工作原理: 我有一个txt文件中的数字列表(在资产中)。我正在逐行读取txt文件,并将TextView的文本设置为当前行。现在我必须在编辑文本中键入相同的数字。但是如果我比较EditText和当前行,应用程序会说它们不一样,尽管它们是一样的 我在资产中有一个不同编号的文件,如下所示: 3 9 8 14 [finish] 稍后将使用[finish]标记,这样我就可以完成应用程序,但现在已经不需要了 我定义了以下字符串和视图: public
我在资产中有一个不同编号的文件,如下所示:
3
9
8
14
[finish]
稍后将使用[finish]
标记,这样我就可以完成应用程序,但现在已经不需要了
我定义了以下字符串和视图:
public String curval;
public EditText etds;
public TextView curvalte;
onCreate()方法的一部分: 现在我从文件中读取并将其设置为curvalte的文本:
curval = readerds.readLine();
curvalte.setText(curval);
而且效果很好。
但是,您必须键入与编辑文本中的curvalte
中显示的数字相同的数字。
如果我尝试对EditText中带有curval
的文本使用equals(),它总是说EditText.getText().toString不等于curval
:
if(etds.getText().toString().equals(curval.toString()){
// The code here
}else{
// This is what I get
Toast.makeText(getBaseContext(), "Wrong answer!", Toast.LENGTH_LONG).show();
}
即使我输入了正确的答案,我也会听到吐司说它错了。
删除.toString()无法修复它,我不知道可以尝试什么
可能是因为字符串实际上包含一个数字?尝试打印这两个值并查看它们。您甚至可能无法从文件中获取正确的值,或者可能获取了一些奇怪的格式字符,如“\n”请尝试使用.trim()执行此操作,有时这就是问题所在
if(etds.getText().toString().trim().equals(curval.toString().trim()){
// The code here
}else{
// This is what I get
Toast.makeText(getBaseContext(), "Wrong answer!", Toast.LENGTH_LONG).show();
}
好的,我发现了问题。这是资产文件的格式!
Cp1252编码修复了它。也许字符串中有空格,或者大写和小写之间有区别。请尝试以下版本:
if(etds.getText().toString().trim().toLowerCase().equals(curval.toString().trim().toLowerCase())){
Log.i("Yes", "equal");
} else {
Log.i("NO", "not equal");
}
为什么要使用
etds.getText().toString()
而不是etds.getText()
?请尝试使用etds.getText().toString().equals(curvalte.getText().toString())并查看,这取决于您何时使用calling@JashaszungetText
返回可编辑的而不是字符串。是否尝试记录字符串,只是为了确认它们是一样的?也许你应该使用strip()
@Tom哦,那没关系。(我通常不使用Android)首先,谢谢你的回答。我已经检查了这两个值,它们肯定是相同的。谢谢你的回答,但这也不能解决问题。你应该使用UTF-8。Cp1252一直是默认编码,我从来没有遇到过问题。这是因为我使用记事本++创建的文件使用了不同的编码。
if(etds.getText().toString().trim().toLowerCase().equals(curval.toString().trim().toLowerCase())){
Log.i("Yes", "equal");
} else {
Log.i("NO", "not equal");
}