• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

jak porównać int ze String Java

Object Storage Arubacloud
0 głosów
414 wizyt
pytanie zadane 5 października 2020 w Java przez lucyliu Początkujący (370 p.)

Cześć,

Piszę aplikację, która będzie ułatwiała realizować cele użytkownika. Na jednym ekranie użytkownik podaje nazwę celu oraz ilość do wykonania w tygodniu (np. angielski 3). Na kolejnym okienku pokazuje się nazwa celu o raz checboxy do odznaczenia. 

Chciałabym, że program porównywał ilość odznaczonych checkboxów z liczbą podaną przez użytkownika (JTextField) i jeśli się zgadza to pokazywał napis: Brawo!.

Nie do końca miałam pomysł jak to napisać, więc stworzyłam sobie coś takiego:

	i = 1;
		
            chb11.addItemListener(new ItemListener() {    
			@Override
			public void itemStateChanged(ItemEvent e) {
			    if(chb11.isSelected()) {
			    	suma += i;
			    	 }	
			}    
         });    
            chb12.addItemListener(new ItemListener() {    
    			@Override
    			public void itemStateChanged(ItemEvent e) {
    			    if(chb12.isSelected()) {
    			    	suma += i;
    			    	 }	
    			}    
             });    
            chb13.addItemListener(new ItemListener() {    
    			@Override
    			public void itemStateChanged(ItemEvent e) {
    			    if(chb13.isSelected()) {
    			    	suma += i;
    			    	 }	
    			}    
             });    

i utknęłam na porównaniu sumy z JTextField, bo nie mogę porównać int ze Strigiem. 

	if (suma == NewGoals.n1.getText()) {
			add(brawo);
		}
		

Prośba o nakierowanie mnie, jak mogę to porównać. Albo jak inaczej podejść do tego :)

2 odpowiedzi

+3 głosów
odpowiedź 5 października 2020 przez Wiciorny Ekspert (270,190 p.)

Po pierwsze nie porównujemy stringów za pomocą  " ==" ten operator jest do typów prostych, 
string porównujemy za pomocą metody Equals. Możesz użyć tej metody, ewentualnie skorzystać także z metody 

String s=String.valueOf(i)
// w ten sposób uzykasz postac swojego int jako string
i wtedy wywolac metode equals

s.equals(twoj_string) ;
//dla przykładu 

link do metody i opisu po polsku https://javastart.pl/baza-wiedzy/programowanie-obiektowe/metoda-equals
 

0 głosów
odpowiedź 25 października 2020 przez bartzdev Użytkownik (780 p.)

String, który chcesz przyrównać do liczby możesz bardzo łatwo sprowadzić do prymitywnej wartości, używając Integer.parseInt, następnie przyrównując otrzymaną wartość do liczby. Przy okazji możesz też obsłużyć NumberFormatException, jeśli Twoje pole nie zawiera dokładnej reprezentacji liczbowej. 
+ to co kolega wyżej napisał, nie porównuj Stringów za pomocą operatora porównania (==), gdyż ten porównuje adresy w pamięci obiektów, nie rzeczywiste ich wartości. 

komentarz 25 października 2020 przez mbabane Szeryf (79,280 p.)
edycja 25 października 2020 przez mbabane

W sumie w tym przypadku korzystniej jest chyba w drugą stronę tj. zamieniać int na String (czyli tak jak zaproponował Wiciorny) bo jak sam zauważyłeś robiąc parseInt można dostać exception, a int zawsze będzie poprawny.

edit:

Jak się tak zastanowić to nie tylko w tym przypadku. Ogólnie jeśli trzeba porównać wartość typu liczbowego z wartością String to zawsze będzie korzystniej zamienić typ liczbowy na String niż odwrotnie - typ liczbowy zawsze będzie poprawny dla toString'a, a String do sparsowania nie.

komentarz 26 października 2020 przez bartzdev Użytkownik (780 p.)
Nie można mówić, że zawsze będzie korzystniej zamieniać liczbę na łańcuch, to nie ma żadnego sensu. Wyjątki nie powstały po to, by ich unikać, tylko by je obsługiwać, wtedy daje to programiście stałą kontrolę nad programem.

W powyższym przykładzie celowo napisałem o wyjątku, gdyż dzięki niemu można zawęzić źródło poszukiwań. Choć akurat do tego celu również są lepsze alternatywy.

Podobne pytania

+1 głos
0 odpowiedzi 623 wizyt
pytanie zadane 15 października 2017 w Java przez Hiskiel Pasjonat (22,830 p.)
0 głosów
3 odpowiedzi 12,475 wizyt
pytanie zadane 9 stycznia 2016 w Java przez Int_main Bywalec (2,850 p.)
0 głosów
1 odpowiedź 609 wizyt
pytanie zadane 2 kwietnia 2020 w Java przez mm Użytkownik (890 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...