2011-05-24 5 views
2

Я новичок в Java и Android, поэтому я уверен, что это будет простой вопрос/ответ. Я знаю, что для выяснения, соответствует ли строка другой строке, вы используете равную функцию. В моей ситуации я просматриваю QR-код, где результат сканирования похож на «EMPLOYEE ~~ John Smith ~~ DIVISION ~~ Maintenance». Мне нужно знать, как сделать следующее:Android String Not Equal

String contents = intent.getStringExtra("SCAN_RESULT"); 
// I know that "contents" contains the string " EMPLOYEE~~John Smith~~DIVISION~~Maintenance" 

String[] myJunk = contents.split("~~"); 
// This should split everything up into an array named myJunk (right)? 

String val1 = myJunk[0]; 
// Now val1 Should be equal to "EMPLOYEE" 

if (myJunk[0].equals(val1)){ 
    // Do Something 
} 

В примере кода Java, myJunk [0] никогда не равна val1. Что я делаю не так?

+2

Это должно быть равным. Я просто попробовал этот код. У вас может быть и другая проблема. Можете ли вы опубликовать полный код? –

+1

да, работает для меня, попробовал, и myJunk [0] .equals (val1) == true –

ответ

0

Ваша строка: EMPLOYEE~~John Smith~~DIVISION~~Maintenance

Таким образом, после spliting, myJunk [0] будет содержать EMPLOYEE (обратите внимание на пространство перед словом СОТРУДНИКА).

Итак, прежде чем сравнивать, вы должны trim ваше значение

+1

не имеет для меня никакого смысла. Он выполняет 'String val1 = myJunk [0];' прямо перед сравнением. – MByD

+0

Это тоже не имеет никакого смысла. –

+0

aha вы правы, я не знаю, что он сравнивает 2 одинаковые значения. – ccheneson

2

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

String contents = "EMPLOYEE~~John Smith~~DIVISION~~Maintenance"; 
String[] myJunk = contents.split("~~"); 
// This should split everything up into an array named myJunk (right)? 

String val1 = myJunk[0]; 
Toast.makeText(this, "val1 = "+val1, Toast.LENGTH_LONG).show(); 
Toast.makeText(this, "val2 = "+myJunk[1], Toast.LENGTH_LONG).show(); 
// Now val1 Should be equal to "EMPLOYEE" 

if (myJunk[0].equals(val1)){ 
    Toast.makeText(this, "equals", Toast.LENGTH_LONG).show(); 
} 
+0

Это не то же самое, что он опубликовал. Обратите внимание на пробел в строке. И, кстати, это не решает проблему, которая должна быть где-то еще, так как этот код работает. –

+0

@edem: вы можете просто изменить мой ответ, чтобы добавить пространство, это все, и я проверил его код, чтобы проверить его, и он работает для меня, потому что он сравнивает те же значения, , и вам не нужно снимать к -1, мы здесь, чтобы помочь – Houcine

+0

Я тоже тестировал, но это не ответы, потому что они не решают проблему. Либо вопрос неисправен, либо проблема в другом месте. –

0

Метод, который я обычно использую, заключается в том, чтобы распечатывать мои переменные, когда есть сомнения. Поэтому, если вы не знаете, где проблема, вы можете попробовать что-то вроде этого. (Это требует, чтобы быть в состоянии увидеть выход, в LogCat, например)

String contents = intent.getStringExtra("SCAN_RESULT"); 
// I know that "contents" contains the string " EMPLOYEE~~John Smith~~DIVISION~~Maintenance" 
System.out.println("contents is "+contents); 

String[] myJunk = contents.split("~~"); 
// This should split everything up into an array named myJunk (right)? 
System.out.println("Array size is "+myJunk.length); 

String val1 = myJunk[0]; 
// Now val1 Should be equal to "EMPLOYEE" 

for(int i=0; i < myJunk.length; i++) { 
    System.out.println("String "+i+ "in array is: "+myJunk[i]); 
} 
//Here i run through the array and print every element. 

if (myJunk[0].equals(val1)){  
// Do Something 
} 

Это немного избыточна, но это в основном, чтобы показать один из способов получения всей необходимой информации, чтобы найти проблему :)

+0

Вы должны использовать Log.d (YOUR_TAG, «ваша строка») для регистрации отладки и мониторинга процесса в logcat | grep YOUR_TAG, на мой взгляд. –

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