Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Porovnání řetězců

Aktivity
Avatar
Neaktivní uživatel:6.7.2013 17:49

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
Neaktivní uživatelský účet
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Lukáš Hruda:6.7.2013 17:54

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

 
Nahoru Odpovědět
6.7.2013 17:54
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:6.7.2013 17:57

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
Odpovídá na Kit
Neaktivní uživatel:6.7.2013 17:59

a jak ji dopíšu?

Nahoru Odpovědět
6.7.2013 17:59
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:6.7.2013 18:01

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
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Petr Nymsa:6.7.2013 18:07

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
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:6.7.2013 18:08

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
Odpovídá na Kit
Neaktivní uživatel:6.7.2013 18:10

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
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:6.7.2013 18:13

...
a nende to spustit

Nahoru Odpovědět
6.7.2013 18:13
Neaktivní uživatelský účet
Avatar
Odpovídá na Kit
Neaktivní uživatel:6.7.2013 18:13

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

Nahoru Odpovědět
6.7.2013 18:13
Neaktivní uživatelský účet
Avatar
Odpovídá na Petr Nymsa
Neaktivní uživatel:6.7.2013 18:14

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

Nahoru Odpovědět
6.7.2013 18:14
Neaktivní uživatelský účet
Avatar
Odpovídá na Kit
Neaktivní uživatel:6.7.2013 18:17

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
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:6.7.2013 18:19

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

Nahoru Odpovědět
6.7.2013 18:19
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:6.7.2013 18:20

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
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:6.7.2013 18:22

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

Nahoru Odpovědět
6.7.2013 18:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:6.7.2013 19:14

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
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:6.7.2013 19:22

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

Nahoru Odpovědět
6.7.2013 19:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:6.7.2013 20:10

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
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:6.7.2013 20:13

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
Odpovídá na Kit
Neaktivní uživatel:6.7.2013 20:16

no to máš pravdu

Nahoru Odpovědět
6.7.2013 20:16
Neaktivní uživatelský účet
Avatar
Odpovídá na Kit
Neaktivní uživatel:6.7.2013 20:28
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
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:6.7.2013 20:31

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:6.7.2013 20:38

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
6.7.2013 20:38
1 + 1 = 2
Avatar
Odpovídá na Benjibs
Neaktivní uživatel:9.7.2013 13:19

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

Nahoru Odpovědět
9.7.2013 13:19
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:9.7.2013 13:35

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
Odpovídá na Kit
Neaktivní uživatel:9.7.2013 13:44

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
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:9.7.2013 13:51

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:9.7.2013 14:14

**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
Tvůrce
Avatar
Odpovídá na Benjibs
Kit:9.7.2013 14:22

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
9.7.2013 14:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:9.7.2013 14:51

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

Nahoru Odpovědět
9.7.2013 14:51
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:9.7.2013 14:54

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

Nahoru Odpovědět
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 Neaktivní uživatel
Luboš Běhounek Satik:9.7.2013 15:04

Tomuhle se rika ternarni vyrazy a jsou bezne pouzivane.

Nahoru Odpovědět
9.7.2013 15:04
https://www.facebook.com/peasantsandcastles/
Avatar
Benjibs
Člen
Avatar
Odpovídá na Kit
Benjibs:9.7.2013 18:39

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
Tvůrce
Avatar
Odpovídá na Benjibs
Kit:9.7.2013 19:12

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:9.7.2013 19:21

: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
Tvůrce
Avatar
Odpovídá na Benjibs
Kit:9.7.2013 19:28

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:9.7.2013 19:30

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

Nahoru Odpovědět
9.7.2013 19:30
1 + 1 = 2
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Benjibs
Kit:9.7.2013 19:37

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:9.7.2013 19:41

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

Nahoru Odpovědět
9.7.2013 19:41
1 + 1 = 2
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Benjibs
Kit:9.7.2013 19:59

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:9.7.2013 20:01

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
Avatar
Nahoru Odpovědět
9.7.2013 20:23
Neaktivní uživatelský účet
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.