如果!不为StringBuilder android工作

如果!不为StringBuilder android工作,android,Android,我的代码读取一个.txt文件并检查其中是否没有“yoloswag”。如果没有,则在对话框中显示字符串 private void display() { File sdcard = Environment.getExternalStorageDirectory(); File file = new File(sdcard, "broadcast.txt"); StringBuilder text = new StringBuilder(); try {

我的代码读取一个.txt文件并检查其中是否没有“yoloswag”。如果没有,则在对话框中显示字符串

private void display() {
    File sdcard = Environment.getExternalStorageDirectory();
    File file = new File(sdcard, "broadcast.txt");
    StringBuilder text = new StringBuilder();
    try {
        BufferedReader br = new BufferedReader(new FileReader(file));
        String line;
        while ((line = br.readLine()) != null) {
            text.append(line);
            text.append('\n');
        }
        br.close();
    } catch (IOException e) {
    }
    if (!text.equals("yoloswag")) {
        AlertDialog alertDialog = new AlertDialog.Builder(this)
                .setTitle("BROADCAST").setMessage(text).create();
        alertDialog.getWindow().setType(
                WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
        alertDialog.show();
    } else {
        // don't show
    }
}

但问题是,无论.txt文件中是否包含“yoloswag”,它总是显示对话框。我哪里错了???

它将始终为false,因为您需要在StringBuilder上调用toString()方法

if (!text.toString().equals("yoloswag"))
此外,对于您正在阅读的每一行,您都会在末尾添加一个“\n”,因此,即使文件包含“yoloswag”,您生成的StringBuilder也会是“yoloswag\n”,这就是它们永远不相等的原因。

好了

    String result = text.toString();
    if (!result.contains("yoloswag")) { 
         AlertDialog alertDialog = new AlertDialog.Builder(this)
        .setTitle("BROADCAST")
        .setMessage(text).create();alertDialog.getWindow().setType( WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 
         alertDialog.show(); 
   } else { 
      // don't show 
   }

很高兴这有帮助。如果答案解决了你的问题,就接受它problem@joey那么你并没有按照预期的方式使用SO。不过,接受哪个答案取决于你自己。一般来说,这应该是最有用的答案。