Diskuze: Porovnání řetězců

Java Java Porovnání řetězců

Avatar
Mr. Forstak
Člen
Avatar
Mr. Forstak:

Nazdar,
v tomto kódu

package diktovac;
import java.util.Scanner;

public class Diktovac {

    public static void main(String[] args)
    {
      Scanner sc = new Scanner (System.in, "Windows-1250");
      System.out.println("Zadej co je podle tebe nejlepší:");
      String s = sc.nextLine();
      s = s.toLowerCase();
      if (s == java)
          System.out.println("Správně");
      if (s != java)
          System.out.println("Špatně Java je nejlepší");
    }
}

mi to v tomhle

if (s == java)

i tomhle

if (s != java)

mi to hlasí tohle (obrázek), nevíte co s tím?
není náhodou na String něco jiného než

if

?

Editováno 6.7.2013 17:50
 
Odpovědět 6.7.2013 17:49
Avatar
Odpovídá na Mr. Forstak
Lukáš Hruda (Luckin):

Nemáš tam deklarovanou žádnou proměnnou java.

 
Nahoru Odpovědět 6.7.2013 17:54
Avatar
Kit
Redaktor
Avatar
Odpovídá na Mr. Forstak
Kit:

Chybí ti deklarace proměnné "java".

Nahoru Odpovědět 6.7.2013 17:57
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Mr. Forstak
Člen
Avatar
 
Nahoru Odpovědět 6.7.2013 17:59
Avatar
Kit
Redaktor
Avatar
Odpovídá na Mr. Forstak
Kit:

Zřejmě nijak, protože ji tam nejspíš vůbec nechceš.

Nahoru Odpovědět 6.7.2013 18:01
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Mr. Forstak
Petr Nymsa:

Pokud nevíš jak deklarovat ani proměnnou, odejdi z tohoto dílu a vrať se na začátek ;)

Nahoru Odpovědět 6.7.2013 18:07
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Kit
Redaktor
Avatar
Odpovídá na Mr. Forstak
Kit:

Zkus tohle:

String s = sc.nextLine();
if (s.equalsIgnoreCase("java"))
    System.out.println("Správně");
else
    System.out.println("Špatně. Java je nejlepší");

Dávej si pozor na "==". Mezi objekty to funguje trochu jinak, mnohem přísněji. Rovnost platí jen v případě, že se jedná o tentýž objekt.

Nahoru Odpovědět 6.7.2013 18:08
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Mr. Forstak
Člen
Avatar
Odpovídá na Kit
Mr. Forstak:

sry a teď zase tohle:

package diktovac;
import java.util.Scanner;

public class Diktovac {

    public static void main(String[] args)
    {
      Scanner sc = new Scanner (System.in, "Windows-1250");
      System.out.println("Zadej co je podle tebe nejlepší:");
      String java = sc.nextLine();
      java = java.toLowerCase();
      if (java == java)
          System.out.println("Správně");
      if (java != java)
          System.out.println("Špatně Java je nejlepší");
    }
}

už sem zkoušel pomocí nápovědy v tohle:

package diktovac;
import java.util.Scanner;

public class Diktovac {

    public static void main(String[] args)
    {
      Scanner sc = new Scanner (System.in, "Windows-1250");
      System.out.println("Zadej co je podle tebe nejlepší:");
      String java = sc.nextLine();
      java = java.toLowerCase();
      if (java.equals(java))
          System.out.println("Správně");
      if (!java.equals(java))
          System.out.println("Špatně Java je nejlepší");
    }
}

...

 
Nahoru Odpovědět 6.7.2013 18:10
Avatar
Mr. Forstak
Člen
Avatar
Mr. Forstak:

...
a nende to spustit

 
Nahoru Odpovědět 6.7.2013 18:13
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Kit
Jiří Gracík:

Tohle mi při učení se základů Javy sežralo tak den :D

Nahoru Odpovědět  +1 6.7.2013 18:13
Creating websites is awesome till you see the result in another browser ...
Avatar
Mr. Forstak
Člen
Avatar
Odpovídá na Petr Nymsa
Mr. Forstak:

sem zapomněl nadeklarovat proměnou = napsat proměnou

 
Nahoru Odpovědět 6.7.2013 18:14
Avatar
Mr. Forstak
Člen
Avatar
Odpovídá na Kit
Mr. Forstak:

P.S. To sry a teď zase tohle ...to sem napsal, protože sem znovu nenačetl stránku

 
Nahoru Odpovědět 6.7.2013 18:17
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Mr. Forstak
Jiří Gracík:

proč porovnáváš javu s javou? zkus javu s "javou" :P

Nahoru Odpovědět  +1 6.7.2013 18:19
Creating websites is awesome till you see the result in another browser ...
Avatar
Kit
Redaktor
Avatar
Odpovídá na Jiří Gracík
Kit:

Když u všech nečíselných objektů budeš používat metodu equals(), tak se ti to nestane. Existují však efektivnější způsoby pro porovnávání.

Nahoru Odpovědět 6.7.2013 18:20
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Jiří Gracík
Kit:

Jenom to ne. Proč by měl proměnnou pojmenovat zrovna "java"?

Nahoru Odpovědět  +1 6.7.2013 18:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Mr. Forstak
Člen
Avatar
Odpovídá na Kit
Mr. Forstak:

já vůbec nevím co to je a na co já sem prostě dělal to co ukazovala nápověda a doufal že to pak bude funkční.

 
Nahoru Odpovědět 6.7.2013 19:14
Avatar
Kit
Redaktor
Avatar
Odpovídá na Mr. Forstak
Kit:

Zkusil sis aspoň to, co jsem napsal dnes v 18:08:32? Žádnou další proměnnou totiž nepotřebuješ.

Nahoru Odpovědět  +1 6.7.2013 19:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Mr. Forstak
Člen
Avatar
Odpovídá na Kit
Mr. Forstak:

jo a fakčí, jenom mě štve že sem to nenapsal já :( , ale dík, aspoň se zas něco naučím :)

 
Nahoru Odpovědět 6.7.2013 20:10
Avatar
Kit
Redaktor
Avatar
Odpovídá na Mr. Forstak
Kit:

U Javy vždy přemýšlím, zda by se požadovaný algoritmus nedal zapsat nějakým kratším zápisem. Už se mi nezdá taková ukecaná jako na začátku. Ukecané jsou hlavně špatně napsané programy.

Nahoru Odpovědět 6.7.2013 20:13
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Mr. Forstak
Člen
Avatar
 
Nahoru Odpovědět 6.7.2013 20:16
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Kit
Jiří Gracík:
java.equals(java)

bude snad vždycky true ne? nechce tam místo toho

java.equals("java")

?

Nahoru Odpovědět 6.7.2013 20:28
Creating websites is awesome till you see the result in another browser ...
Avatar
Kit
Redaktor
Avatar
Odpovídá na Jiří Gracík
Kit:

Proměnná java to tohoto příkladu vůbec nepatří. Jenom to mate lidi.

Nahoru Odpovědět 6.7.2013 20:31
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Benjibs
Člen
Avatar
Benjibs:

Ja by som to robil takto:

package diktovac;
import java.util.Scanner;

public class Diktovac {

    public static void main(String[] args)
    {
      Scanner sc = new Scanner (System.in, "Windows-1250");
      System.out.println("Zadej co je podle tebe nejlepší:");
      if (sc.nextLine().trim().toLowerCase().equals("java"))
          System.out.println("Správně");
      else
          System.out.println("Špatně, Java je nejlepší");
    }
}
Editováno 6.7.2013 20:38
Nahoru Odpovědět  +1 6.7.2013 20:38
1 + 1 = 2
Avatar
Mr. Forstak
Člen
Avatar
Odpovídá na Benjibs
Mr. Forstak:

jo tak by to udělal asi každej - až na mě

 
Nahoru Odpovědět 9.7.2013 13:19
Avatar
Kit
Redaktor
Avatar
Odpovídá na Mr. Forstak
Kit:

Co bys na tom příkladu udělal jinak?

Nahoru Odpovědět 9.7.2013 13:35
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Mr. Forstak
Člen
Avatar
Odpovídá na Kit
Mr. Forstak:

jako magor, bych nepoužil else, ale vypisoval vše do bloků pomocí if, aby to bylo hezký a přehledný (pro mě), ale teď už bych použil else - začal sem se učit 6. díl a chápu jeho výhody.

 
Nahoru Odpovědět 9.7.2013 13:44
Avatar
Kit
Redaktor
Avatar
Odpovídá na Mr. Forstak
Kit:

Dá de to napsat i bez něho:

System.out.println(sc.nextLine().trim().toLowerCase().equals("java") ?
    "Správně" : "Špatně, Java je nejlepší");
Nahoru Odpovědět 9.7.2013 13:51
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Benjibs
Člen
Avatar
Odpovídá na Kit
Benjibs:

**Programs must be written for people to read, and only incidentally for machines to execute.

—Abelson & Sussman, Structure and Interpretation of Computer Programs**

Možno by sa to mohlo zvážiť aj z tej stránky.

Editováno 9.7.2013 14:14
Nahoru Odpovědět 9.7.2013 14:14
1 + 1 = 2
Avatar
Kit
Redaktor
Avatar
Odpovídá na Benjibs
Kit:

Je to lepší? :)

System.out.println(sc.nextLine().trim().equalsIgnoreCase("java") ?
    "Správně" : "Špatně, Java je nejlepší");

Je jasné, že takové záležitosti se v Javě neřeší, ale když už je tady ten příklad, tak proč se nevyblbnout?

Nahoru Odpovědět  +1 9.7.2013 14:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Mr. Forstak
Člen
Avatar
Odpovídá na Kit
Mr. Forstak:

není to náhodou jeden z těch zdrojáků u kterých za měsíc zapomeneš jak fakčí?

 
Nahoru Odpovědět  +1 9.7.2013 14:51
Avatar
Kit
Redaktor
Avatar
Odpovídá na Mr. Forstak
Kit:

Tohle nejsou regulární výrazy. Tyhle obraty běžně používám.

Nahoru Odpovědět  +1 9.7.2013 14:54
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Mr. Forstak
Luboš Běhounek (Satik):

Tomuhle se rika ternarni vyrazy a jsou bezne pouzivane.

Nahoru Odpovědět  +1 9.7.2013 15:04
:)
Avatar
Benjibs
Člen
Avatar
Odpovídá na Kit
Benjibs:

Regulárne výrazy sú (imho) jednoduché, veľa toho u nich nie je čo zabudnúť.

Editováno 9.7.2013 18:39
Nahoru Odpovědět 9.7.2013 18:39
1 + 1 = 2
Avatar
Kit
Redaktor
Avatar
Odpovídá na Benjibs
Kit:

Regulární výrazy jsou velmi kompaktní. Je poměrně snadné je vytvořit, ale často je obtížné pochopit, co ten regulární výraz dělá. Dokonce i když se podíváš na vlastní regulární výraz, který jsi napsal před několika měsíci, bývá to problém. Někdy i takový, že ho raději místo zkoumání napíšeš znovu.

Nemám na mysli triviální regulární výrazy. Ty se dají pochopit rychle. Dnes jsem například dělal tuhle drobnost:

/test/s/$/\:\/path2/

A teď hádej, co to dělá :)

Nahoru Odpovědět 9.7.2013 19:12
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Benjibs
Člen
Avatar
Odpovídá na Kit
Benjibs:

:O
ja som bol zvyknutý na iné..

^(?:\w|[-!?])+[.]@(?:hruska|puska|fuska|gmail)[.](?:com|.sk|.cz)$
Nahoru Odpovědět 9.7.2013 19:21
1 + 1 = 2
Avatar
Kit
Redaktor
Avatar
Odpovídá na Benjibs
Kit:

Hodně záleží na interpretru, pro který to píšeš.

Obávám se, že v tom tvém vidím několik chyb.

Nahoru Odpovědět 9.7.2013 19:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Benjibs
Člen
Avatar
Odpovídá na Kit
Benjibs:

Asi nie si zvyknutý na reguláre v Pythone :)

Nahoru Odpovědět 9.7.2013 19:30
1 + 1 = 2
Avatar
Kit
Redaktor
Avatar
Odpovídá na Benjibs
Kit:

A co ty nadbytečné tečky před sk a cz?

Nahoru Odpovědět 9.7.2013 19:37
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Benjibs
Člen
Avatar
Odpovídá na Kit
Benjibs:

Dobre, nedal som pozor, ospravedlňujem sa :)

Nahoru Odpovědět 9.7.2013 19:41
1 + 1 = 2
Avatar
Kit
Redaktor
Avatar
Odpovídá na Benjibs
Kit:

Jinak vypadají regulární výrazy pro kontrolu mailové adresy a jinak ty, které se používají na prohledávání a úpravu textových souborů s 10Mřádky.

Nahoru Odpovědět 9.7.2013 19:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Benjibs
Člen
Avatar
Benjibs:

V Pythone je možnosť pridať viac-riadkový regulár obsahujúci komentáre(medzery v ňom Python ignoruje), takže celý regexp môže nakoniec vyzerať celkom prehľadne.

Nahoru Odpovědět 9.7.2013 20:01
1 + 1 = 2
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 42 zpráv z 42.