Diskuze: Porovnání řetězců
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 42 zpráv z 42.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Nemáš tam deklarovanou žádnou proměnnou java.
Zřejmě nijak, protože ji tam nejspíš vůbec nechceš.
Pokud nevíš jak deklarovat ani proměnnou, odejdi z tohoto dílu a vrať se
na začátek
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.
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ší");
}
}
...
Tohle mi při učení se základů Javy sežralo tak den
sem zapomněl nadeklarovat proměnou = napsat proměnou
P.S. To sry a teď zase tohle ...to sem napsal, protože sem znovu nenačetl stránku
proč porovnáváš javu s javou? zkus javu s "javou"
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í.
Jenom to ne. Proč by měl proměnnou pojmenovat zrovna "java"?
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í.
Zkusil sis aspoň to, co jsem napsal dnes v 18:08:32? Žádnou další proměnnou totiž nepotřebuješ.
jo a fakčí, jenom mě štve že sem to nenapsal já , ale dík, aspoň se zas něco
naučím
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.
java.equals(java)
bude snad vždycky true ne? nechce tam místo toho
java.equals("java")
?
Proměnná java to tohoto příkladu vůbec nepatří. Jenom to mate lidi.
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ší");
}
}
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.
Dá de to napsat i bez něho:
System.out.println(sc.nextLine().trim().toLowerCase().equals("java") ?
"Správně" : "Špatně, Java je nejlepší");
**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.
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?
není to náhodou jeden z těch zdrojáků u kterých za měsíc zapomeneš jak fakčí?
Tohle nejsou regulární výrazy. Tyhle obraty běžně používám.
Tomuhle se rika ternarni vyrazy a jsou bezne pouzivane.
Regulárne výrazy sú (imho) jednoduché, veľa toho u nich nie je čo zabudnúť.
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á
ja som bol zvyknutý na iné..
^(?:\w|[-!?])+[.]@(?:hruska|puska|fuska|gmail)[.](?:com|.sk|.cz)$
Hodně záleží na interpretru, pro který to píšeš.
Obávám se, že v tom tvém vidím několik chyb.
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.
Zobrazeno 42 zpráv z 42.