Intellij podkreśla warunek na żółto.

Intellij podkreśla warunek na żółto.
SO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

Intellij zawsze podkresla warunek na żółto. Jak to zmienić?

Kopiuj
void main() {

    String name = "The Code";

    int length = name.length();
    char letter = name.charAt(0);
    int index = name.indexOf(" ");
    int lastIndex = name.lastIndexOf("o");

    String name1 = name.toUpperCase();
    String name2 = name.toLowerCase();
    String name3 = name.trim();
    String name4 = name.replace("o", "a");

    System.out.println(name);
    System.out.println(length);
    System.out.println(letter);
    System.out.println(index);
    System.out.println(lastIndex);
    System.out.println(name1);
    System.out.println(name2);
    System.out.println(name3);
    System.out.println(name4);
    System.out.println(name.isEmpty());

     name = "";

    if (name.isEmpty()) {
        System.out.println("Your name is empty");
    } else {
        System.out.println("Hello " + name);
    }

    name = "";

    if (name.contains(" ")) {
        System.out.println("Your name contains a space");
    } else {
        System.out.println("Your name DOESN'T contain any spaces");
    }

    name = "password";

    if (name.toLowerCase().equals("password")) {
        System.out.println("Your name can't be password");
    } else {
        System.out.println("Hello " + name);
    }

    name = "Password";

    if (name.equalsIgnoreCase("password")) {
        System.out.println("Your name can't be password");
    } else {
        System.out.println("Hello " + name);
    }
}

https://youtrack.jetbrains.com/issue/IDEA-334195
https://stackoverflow.com/questions/31829958/intellij-idea-hint-condition-is-always-false-can-that-be-true-here

Piszę void main() {} ponieważ od Javy 26, 27 Intellij ustawia na szaro public w klasie i funkcji main oraz słowo args.
Nie wiem jak to będzie działać gdy nowy kod będzie mieszany ze starym kodem.
Na panelu bocznym w projekcie funkcja Main i inne pliki Javy sa widoczne z dopiskiem .java czyli Main.java.
To tak to teraz będzie na wzór Kotlina?

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5618
2

który warunek? btw doczytałeś komunikat? podkreśla pewnie bo wykrył martwy kod tzn:

Kopiuj
     name = "";

    if (name.isEmpty()) {
        System.out.println("Your name is empty");
    } else {
        System.out.println("Hello " + name);
    }

najpierw przypisujesz wartość do name na sztywno a potem sprawdzasz co tam jest wiec zawsze będzie true więc cię Intellij informuje że tam jest martwy kod

SO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

Ale inne edytory tego nie podkreślają.

Kopiuj
void main() {
 
  String name = "The Code";

  if (!name.isEmpty()) {
        System.out.println("Your name is empty");
    } else {
        System.out.println("Hello " + name);
    }
}
KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5618
2
system_out napisał(a):

Ale inne edytory tego nie podkreślają.

bo są głupie? bo nie przeprowadzają tak dobrze statycznej analizy kodu a tylko kolorują składnię? jeśli masz warningi z Intellij to w większości przypadków powinieneś je poprawić a nie wyłączyć

SO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

Jak to teraz będzie wyglądać z nową Javą 26 gdy mamy w projekcie wiele plików Javy. Ale gdy dodamy nowy kod void main(){} i usuniemy w nowych plikach public i args to struktura programu wygląda w ten sposób.

Kopiuj
Program1
Program2.java
Program3
Program4
program5.java

@KamilAdam To nie wyłączasz tego Editor-Inlay Hints: Code vision , Annotations? Nie przeszkadza ci to i nie zaśmieca kodu, jest przez to mniej widoczny.
Zawsze te opcje co jakiś czas zmieniają i trzeba się naszukać w ustawieniach jak to wyłączyć, ponieważ są już w innym miejscu.

opiszon
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 854
3

Kod jest zły, ma martwy branch a problemem jest to że IDE ci pokazuje błąd?
WTF

Zamiast zmiany ustawień IDE powinieneś zmienić kurs.

SO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

Być może gość z kursu nie zwraca na to uwagi, ponieważ to tylko przykłady do nauki.
Widzę że w Intellij można teraz zainstalować rozszerzenie do C/C++ Language Support, ale jest jeszcze drugie CLion.
Czyli język C++ wymaga tych dwóch rozszerzeń? Co się stanie z tymi zainstalowanymi rozszerzeniami po upływie okresu próbnego 30 dni?
Intellij zablokuje te funkcje? Ostatnio mówili że wszystko jest za darmo jeżeli piszesz programy na swój użytek i na nich nie zarabiasz.

opiszon
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 854
2

Nie wiem na co zwraca uwagę, ale kod ewidentnie jest błedny.

Żaden z 4 warunków else się nigdy nie wykona.

B1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 546
0
system_out napisał(a):

Intellij zawsze podkresla warunek na żółto. Jak to zmienić?

Kopiuj
void main() {
 (...)
}

https://youtrack.jetbrains.com/issue/IDEA-334195
https://stackoverflow.com/questions/31829958/intellij-idea-hint-condition-is-always-false-can-that-be-true-here

A w ogóle sprawdzałeś co linkujesz? W obu przypadkach w komentarzach wyjaśniają że to prawidłowe i pożądane działanie.

Po drugie to brakowało opisu czego ten kod mam uczyć, bo wygląda na to że masz sobie sprawdzić jak wyglądają operacje na Stringach i w pewnych miejscach sobie ustawiasz name sprawdzając co się stanie. Co prawda ten kod to brzydkie spaghetti, no ale minimalną wartość edukacyjną ma.

Jako że się dopiero uczysz potraktuj to jako lekcję że nie każdy kurs jest w 100% dobry.

jarekr000000
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: U krasnoludów - pod górą
  • Postów: 4726
2

Co do tego, że kurs nie jest dobry.

Żeby czegoś nauczyć to zwykle trzeba upraszczać, bo inaczej studenci zostaną zawaleni masą szczegółów, które na danym etapie nauki nie są do niczego potrzebne.

Więc to absolutnie normalne, że kody programów z kursów są "cringe" i to na wielu poziomach. Szczególnie jeśli nie znamy kontekstu - czego akurat dana lekcja dotyczyła. To nie znaczy, że te kursy są złe, czasem wręcz przeciwnie.

Z ciekawostek:
Czy wiedzieliście, że kanoniczny "hello world" jest niepoprawny :-)
Trzeba kilka rzeczy dorzucić do kodu, żeby go poprawnym zrobić. W C i w Javie i w wielu innych językach:
https://blog.sunfishcode.online/bugs-in-hello-world/

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.