2015-12-20 4 views
-2

В настоящее время я работаю над Android-приложением, и я застрял. при сравнении 2 строки (1 случайной из массива и 1 от входа, приложение говорит, что они не равны Вот некоторые из моего кода:.сравнить строки android app

Random random = new Random(); 
int randInt = random.nextInt(words.length); 
assignement.setText(words[randInt]); 

public void check(){ 

    answer=inputFrame.getText().toString(); 

    if(inputFrame.getText().toString()!= null && answer.equals(assignement)){ 
     assignement.setText(words[randint]); 
     Toast.makeText(getApplicationContext(),"correct",Toast.LENGTH_SHORT).show(); 

    }else if(inputFrame.getText().toString()==null){ 
     Toast.makeText(getApplicationContext(),"enter text first",Toast.LENGTH_SHORT).show(); 
    }else if(!answer.equals(assignement)){ 
     Toast.makeText(getApplicationContext(),"wrong",Toast.LENGTH_SHORT).show(); 

    } 

Я надеюсь, что кто-нибудь может помочь мне

+0

В чем проблема? Говорит ли приложение, что они не равны, даже если они равны? – MC10

+0

Возможно, корпус отличается. Попробуйте использовать 'equalsIgnoreCase()'. Также обрезайте входную строку, чтобы отключить возможные начальные/конечные пробелы. –

+0

Не могли бы вы поместить вход? Какие слова в массиве? –

ответ

0

Вместо этого сравнить

answer.equals(assignement) 

вы должны использовать этот

answer.equals(assignement.getText().toString()) 

потому что answer является String переменной и assignement является problably EditText.

Этот код должен работать нормально.

public void check() { 
    String answer = inputFrame.getText().toString(); 
    String nameFromArray = assignement.getText().toString(); 

    if (answer.isEmpty()) { // because toString never returns null 
     Toast.makeText(getApplicationContext(), "enter text first", Toast.LENGTH_SHORT).show(); 
    } else if (answer.equals(nameFromArray)) { 
     Toast.makeText(getApplicationContext(), "correct", Toast.LENGTH_SHORT).show(); 
    } else { 
     Toast.makeText(getApplicationContext(), "wrong", Toast.LENGTH_SHORT).show(); 
    } 
} 
0

С вами используют

assignement.setText(words[randInt]); 

Я предполагаю, что это текстовое поле или класс Таким образом, вы должны изменить свой if, как показано ниже:.

if(inputFrame.getText().toString()!= null && answer.equals(assignement.getText())){ 
     assignement.setText(words[randint]); 
     Toast.makeText(getApplicationContext(),"correct",Toast.LENGTH_SHORT).show(); 

    } 

Знайте, я добавил .getText() способ.

Кроме того, я рекомендую использовать equalsIgnoreCase, если для вас не важна чувствительность к случаю.

+0

Спасибо, что-то сработало! –

+0

Спасибо за изменение принятого ответа после этого, даже содержание ответов одинаково .. –

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