Ale*_*ani -3 android if-statement
我有一个应用程序,每次你打开它,该应用程序读取保存到内部存储器中的文件并打印一些东西.然后它更新文件.
String filename = "myfile";
String restore = "";
FileOutputStream outputStream;
FileInputStream inputStream;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    restore = read();
    System.out.println("Before if statement the restore value is: " + restore);
    if(restore == "test3"){
                restore = "test4";
                System.out.println("I' m saving: " +restore);
                save(restore);
            }
            if(restore == "test2"){
                restore = "test3";
                System.out.println("I'm saving: " +restore);
                save(restore);
            }
           if(restore2 == "test1"){
                restore = "test2";
                System.out.println("I'm saving  " +restore);
                save(restore);
            }
}
 public String read() {
    try {
        inputStream = openFileInput(filename);
        StringBuilder builder = new StringBuilder();
        String restore2 = null;
        int ch;
        while((ch = inputStream.read()) != -1){
            builder.append((char)ch);
        }
       System.out.println(builder.toString());
        if(builder.toString() != null) {
            restore2 = builder.toString();
            System.out.println("Restore 2 value is: " + restore2);
        }
        inputStream.close();
        return restore2;
    } catch (Exception e) {
        e.printStackTrace();
        return "test1";
    }
 }
private void save(String salvare) {
    try {
    outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
    outputStream.write(salvare.getBytes());
        System.out.println("I saved: " + salvare);
    outputStream.close();
} catch (Exception e) {
    e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
当我第一次打开应用程序时,一切顺利,我得到:
Before if statement the restore value is test1
I'm saving test1
I saved test 1 
当我重新打开我的应用程序时,read()函数运行良好,因为我得到了
Before if statement the restore value is test2
Run Code Online (Sandbox Code Playgroud)
但我没有得到I'm saving test2.这意味着第二个if语句似乎没用.看着我的日志猫我没有得到任何类型的错误.可能是什么问题?
StringJava中的s是对象.因此,应将它们与equals方法进行比较,而不是与==运营商(检查身份)进行比较.
例如:
if (restore.equals("test3")) {
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           47 次  |  
        
|   最近记录:  |