Comparând șirurile în java, itnerd

În timpul programării în Java, o aplicație a întâmpinat necesitatea de a verifica un meci pe două linii. În mod obișnuit, am făcut o verificare standard cu operatorul "==", cum ar fi:







Care a fost surpriza mea când cecul nu a funcționat. Am început să săpat și am înțeles esența problemei, decât acum și vreau să împărtășesc.

Totul este că compilatorul din exemplul de mai sus nu va verifica conținutul liniilor însăși, ci doar referințe la ele. Un exemplu simplu. Următorul cod va afișa mesajul "Șirul nu se potrivește":

String str1 = String nou ("test");
String str2 = String nou ("test");
dacă (str1 == str2)
System.out.println ("Match string");
altfel
System.out.println ("String-urile nu se potrivesc");

Prin urmare, pentru a compara două linii, trebuie să utilizați metoda logică egală (obiect obj). Se întoarce adevărat. dacă argumentul obj nu este nul, este un obiect al clasei de șir și șirul conținut în el este complet identic cu acest șir până când coincid cazul literelor.







String str1 = "test";
String str2 = "test";
dacă (str1.equals (str2))
System.out.println ("Match string");
altfel
System.out.println ("String-urile nu se potrivesc");

Acest cod este deja corect și va afișa mesajul "Linii se potrivesc".

În plus, dacă trebuie să încercați linii ignorând cazul - utilizați metoda equalsIgnoreCase ("obj"). Mult noroc și fii atent la programare.

public static void principal (String [] args) int x;
int y;
do x = Integer.parseInt (JOptionPane.showInputDialog ("Valoare x"));
y = Integer.parseInt (JOptionPane.showInputDialog ("Valoare y"));
> în timp ce (x! = y);

JOptionPane.showMessageDialog (null, "Valoarea este adevărată.");

>
>
Aici, ca și cum totul este clar, acest lucru ar repeta ciclul de care aveți nevoie pentru a "XY"

Astfel codurile x și y obțin valoarea String

clasa publică JavaApplication1

public static void principal (String [] args) String x;
String y;
do x = JOptionPane.showInputDialog ("Valoare x");
y = JOptionPane.showInputDialog ("Valoare y");
> în timp ce (x.equalsIgnoreCase (y));

JOptionPane.showMessageDialog (null, "Valoarea este adevărată.");

>
>
După cum puteți vedea din listă, bucla se va repeta pe o perioadă nedeterminată până când valorile vor fi egale ...
de exemplu, C # poate fi rezolvată în modul următor
...
>
în timp ce (x.ToLower ()! = y.ToLower ())
...

Întrebarea.
Există o soluție similară pentru JAVA.







Trimiteți-le prietenilor: