2013-02-11 4 views
0

У меня возникла проблема с этим фрагментом кода. Оператор if в строке 6 игнорируется во время выполнения. Я перешагнул код в этой точке, а значение переменной file [position] - «subjects.dat». Тем не менее, он пропускает шаги в этом и переходит к следующему выражению else. Любые идеи, почему?Если оператор пропущен во время выполнения

dialogButton.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       if (markComplete.isChecked()) { 
        String toDelete; 
        String[] files = fileList(); 
        if (files[position] == "subjects.dat") { //the error occurs at this line 
         toDelete = files[position + 1]; 
         boolean deleted = deleteFile(toDelete); 
         if (deleted) { 
          dialog.dismiss(); 
         } else { 
          // Do nothing 
         } 
        } else {        
         toDelete = files[position];      
         boolean deleted = deleteFile(toDelete); 
         if (deleted) { 
          dialog.dismiss(); 
         } else { 
          //Do nothing 
         } 
        } 

       }     
      } 

Спасибо!

+1

, потому что оценивается в фальшива, как сравнения строк не сделали этого путь – njzk2

+0

@RyanThames isEquals() ??? вы имеете в виду equals() ?? – PermGenError

+0

Это может быть одна из наиболее распространенных ошибок java, а также 'if (var = 2)';) – nicopico

ответ

6

Чтобы сравнить фактическое значение двух строк, вы должны использовать .equals() - в противном случае вы проверяете, являются ли они одним и тем же объектом.

if (files[position].equals("subjects.dat")) { 
    // do stuff 
} 
+2

Вы имеете в виду 'equals()'? –

+0

@RohitJain кричит, исправлено. – thegrinner

1

Всегда проверяйте равенство строк, используя equals() method. == Оператор cheks, если две переменные refrenece указывают на один и тот же объект.

1

Строки - это объекты в java, и когда вы используете «==», вы сравниваете ссылки (указатели), которые обычно бывают разными (обычно потому, что для коротких строк выполняется некоторая оптимизация). Короче говоря, использовать

string.equals(anotherString) 

вместо

string == anotherString 
0

String - использование .equals(). == никогда не даст вам правду, поскольку объекты разные.

Вместо файлов [положение] == «subjects.dat» использование файлов [положение] .equals («subjects.dat»)

Смежные вопросы