Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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
Java 字符串等于()不等于';行不通_Java_Android_String_Integer_Equals - Fatal编程技术网

Java 字符串等于()不等于';行不通

Java 字符串等于()不等于';行不通,java,android,string,integer,equals,Java,Android,String,Integer,Equals,这是一个我已经试着解决了三个小时的问题。 应用程序的工作原理: 我有一个txt文件中的数字列表(在资产中)。我正在逐行读取txt文件,并将TextView的文本设置为当前行。现在我必须在编辑文本中键入相同的数字。但是如果我比较EditText和当前行,应用程序会说它们不一样,尽管它们是一样的 我在资产中有一个不同编号的文件,如下所示: 3 9 8 14 [finish] 稍后将使用[finish]标记,这样我就可以完成应用程序,但现在已经不需要了 我定义了以下字符串和视图: public

这是一个我已经试着解决了三个小时的问题。 应用程序的工作原理: 我有一个txt文件中的数字列表(在资产中)。我正在逐行读取txt文件,并将TextView的文本设置为当前行。现在我必须在编辑文本中键入相同的数字。但是如果我比较EditText和当前行,应用程序会说它们不一样,尽管它们是一样的


我在资产中有一个不同编号的文件,如下所示:

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@Jashaszun
getText
返回可编辑的
而不是字符串。是否尝试记录字符串,只是为了确认它们是一样的?也许你应该使用
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");
    }