Під час програмування на Java однієї програми зіткнувся з необхідністю перевірити на збіг дві строчки. За звичкою зробив стандартну перевірку з оператором "==", види:
Якого ж було моє здивування, коли перевірка не спрацювала. Я почав копати і розібрався з суттю проблеми, ніж зараз і хочу поділитися.
Вся справа в тому, що компілятор в зазначеному вище прикладі буде перевіряти не саме вміст рядків, а тільки посилання на них. Простий приклад. Наступний код виведе повідомлення "Рядки не збігаються":
String str1 = new String ( "test");
String str2 = new String ( "test");
if (str1 == str2)
System.out.println ( "Рядки збігаються");
else
System.out.println ( "Рядки не збігаються");
Тому для порівняння двох рядків потрібно використовувати логічний метод equals (object obj). Він поверне значення true. якщо аргумент obj НЕ дорівнює null, є об'єктом класу string, і рядок, що міститься в ньому, повністю ідентична цьому рядку аж до збігу регістра букв.
String str1 = "test";
String str2 = "test";
if (str1.equals (str2))
System.out.println ( "Рядки збігаються");
else
System.out.println ( "Рядки не збігаються");
Цей код вже вірний і поверне повідомлення "Рядки збігаються".
Крім того, якщо вам потрібно перевірити рядки ігноруючи регістр - використовуйте метод equalsIgnoreCase ( "obj"). Успіху і будьте акуратніше при програмуванні.
public static void main (String [] args) int x;
int y;
do x = Integer.parseInt (JOptionPane.showInputDialog ( "Значення х"));
y = Integer.parseInt (JOptionPane.showInputDialog ( "Значення y"));
> While (x! = Y);
JOptionPane.showMessageDialog (null, "Значення вірно.");
>
>
Тут як би все зрозуміло, що б повторився цикл потрібно щоб "XY"
Те як бути коду x and y приймають значення String
public class JavaApplication1
public static void main (String [] args) String x;
String y;
do x = JOptionPane.showInputDialog ( "Значення х");
y = JOptionPane.showInputDialog ( "Значення y");
> While (x.equalsIgnoreCase (y));
JOptionPane.showMessageDialog (null, "Значення вірно.");
>
>
Як видно з лістингу, цикл буде нескінченно повторюватися, поки значення будуть рівні ...
на прикладі C # можна вирішити наступним способом
...
>
while (x.ToLower ()! = y.ToLower ())
...
Питання.
Чи є таке рішення на JAVA.