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

Proste pytanie dotyczące stringów, if'ów i klasy Scanner

+1 głos
112 wizyt
pytanie zadane 30 czerwca 2021 w Java przez GrayWolf Nowicjusz (130 p.)

Witam, mam proste pytanie na które od wczoraj nie mogę znaleźć odpowiedzi. Wykorzystując if'y chciałbym uruchomić dane warunki w zależności od tego co zostanie wprowadzone do konsoli, jednak wprowadzany do konsoli ciąg znaków - nie jest rozpoznawany jako tożsamy z tym który jest wskazany w warunku. Najlepiej będzie wskazać mi to na przykładzie:

// To działa jak należy

    String odp = "NIE";

    if (odp == "TAK"){
        System.out.println("A więc jednak TAK");
    }
    else if (odp == "NIE"){
        System.out.println("NIE do końca");
    }
    else{
        System.out.println("Wszystko inne");
    }

// Z tym również nie mam problemu

    Scanner scan = new Scanner(System.in);
    int odp = scan.nextInt();

    if (odp == 1){
        System.out.println("Wybrano 1");
    }
    else if (odp == 2){
        System.out.println("A tutaj 2");
    }
    else{
        System.out.println("Wybrano inną cyfrę");
    }

// Natomiast tutaj wprowadzane w konsoli "TAK" nie jest rozpoznawane i zawsze kończy się ostatnim "elsem"

    Scanner scan = new Scanner(System.in);
    String odp = scan.next();

    if (odp == "TAK"){
        System.out.println("Wybrano 1");
    }
    else if (odp == "NIE"){
        System.out.println("A tutaj 2");
    }
    else{
        System.out.println("Wpisano cokolwiek innego");
    }

 

2 odpowiedzi

0 głosów
odpowiedź 30 czerwca 2021 przez Velta Nałogowiec (47,430 p.)

W Javie do porównania m. in. wartości należy użyć metody Object.equals:

Scanner scan = new Scanner(System.in);
String odp = scan.next();
if (odp.equals("TAK")) {
    System.out.println("Wybrano 1");
} else if (odp.equals("NIE")) {
    System.out.println("A tutaj 2");
} else {
    System.out.println("Wpisano cokolwiek innego");
}

Albo po prostu użyć switcha:

switch (odp) {
    case "TAK":
        System.out.println("Wybrano 1");
        break;

    case "NIE":
        System.out.println("A tutaj 2");
        break;

    default:
        System.out.println("Wpisano cokolwiek innego");
        break;
}

 

0 głosów
odpowiedź 1 lipca 2021 przez Wiciorny Ekspert (227,970 p.)

Zapraszam do lektorki, bo Klasa String i ten problem, który u Ciebie występuje to jedna z podstawowych rzeczy, którą musisz zrozumieć w Javie do dalszej pracy 
https://javastart.pl/baza-wiedzy/efektywne-programowanie/javatraps-001

Sprawa prosta: porównanie = -> to porównywanie referencji czym to jest też powinieneś wiedzieć i się zapoznać 

Wartości typów obiektowych porównujemy odpowiednimi metodami, albo equals, albo implementowanymi według własnych warunków. 

 

// To działa jak należy
 
    String odp = "NIE";
 
    if (odp == "TAK"){
        System.out.println("A więc jednak TAK");
    }
    else if (odp == "NIE"){
        System.out.println("NIE do końca");
    }
    else{
        System.out.println("Wszystko inne");
    }

Zapoznaj się jeszcze z STRING POOL :) i tym jak tworzone są stringi, gdyż o ile to może i działa 

to tak naprawdę to co poniżej już nie . 
 

public class HelloWorld{

     public static void main(String []args){
        
    String odp = new String("NIE");
 
    if (odp == "TAK"){
        System.out.println("A więc jednak TAK");
    }
    else if (odp == "NIE"){
        System.out.println("NIE do końca");
    }
    else{
        System.out.println("Wszystko inne");
    }
     }
}

// to nie działa Wszystko inne -> rezultat :) 

 

Podobne pytania

0 głosów
1 odpowiedź 81 wizyt
pytanie zadane 4 kwietnia 2020 w Java przez malybyq Użytkownik (980 p.)
0 głosów
5 odpowiedzi 246 wizyt
pytanie zadane 26 marca 2019 w Java przez gorgonkowa Obywatel (1,810 p.)
0 głosów
1 odpowiedź 1,241 wizyt

88,664 zapytań

137,273 odpowiedzi

306,607 komentarzy

58,866 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...