Problém s sc.nextLine() / if() – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Problém s sc.nextLine() / if() – Java – Fórum – Programujte.comProblém s sc.nextLine() / if() – Java – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Eda
~ Anonymní uživatel
4 příspěvky
25. 11. 2015   #1
-
0
-

Ahoj,
mám část kódu:
.....
Scanner sc = new Scanner(System.in);                                            
    String textik1 = sc.nextLine();
    System.out.println("hodnota: " + textik1);
    if(textik1 == "t") {
.....
jehož cílem by mělo být získání vstupu od uživatele (textového stringu) a podle jeho hodnoty další rozhodování. Problém je, že takto to správně vypíše vloženou hodnotu (třeba to "t", ale už to nedělá podmínku, která je s "t" spojena a přejde to rovnou do else (jakoby když nejsou splněny podmínky). Je mi jasné, že to je nějaká blbost - někde bude enter, nebo tak, ale nemohu na to přijít. Poradíte?

Nahlásit jako SPAM
IP: 78.136.145.–
Reklama
Reklama
NotBeginner
~ Anonymní uživatel
181 příspěvků
25. 11. 2015   #2
-
0
-

Ježíši, proboha nauč se pořádně String a java.lang.Object

String není primitivní datový typ a tudíž na něj nelze použít pro porovnání   ==

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#equals(java.lang.Object)

Správně je použít metodu equals

v tvém případě tedy

.....
 Scanner sc = new Scanner(System.in);                                            
     String textik1 = sc.nextLine();
     System.out.println("hodnota: " + textik1);
     if(textik1.equals("t")) {

 .....
Nahlásit jako SPAM
IP: 217.112.161.–
EdaBeginner
~ Anonymní uživatel
2 příspěvky
25. 11. 2015   #3
-
0
-

Díky,

takhle to skutečně funguje, nakonec jsem se tam tedy dohrabal taky, jenomže jsem zjistil, že ani ten equal mi nestačí. Totiž to "t" tam není samo a já bych pak potřeboval samostatně vytáhnout ještě ten text co je za ním. Tudíž jsem na to chtěl jít přes  subString, že bych nejdříve řekl, ať mi najde, jestli je někde ve stringu písmeno t a za ním mezera:

if(textik1.subSubstring(0,2)equals("t ")) {

a pak že bych mu řekl, ať mi řekne zbytek stringu za písmenem t

if(textik1.subSubstring(2)) {

jenže von na mě furt "error: cannot find symbol", případně "error: cannot return a value from method whose result type is void". Takže se na to dnes vyspím a zítra to z něj vyrazím :-)

Nahlásit jako SPAM
IP: 78.136.189.–
NotBeginner
~ Anonymní uživatel
181 příspěvků
26. 11. 2015   #4
-
0
-

Vůbec tě nechápu co máš na mysli. Možná to chceš vyřešit takto:

.....
 Scanner sc = new Scanner(System.in);                                            
     String textik1 = sc.nextLine();
     System.out.println("hodnota: " + textik1);
     String textit2 = "t  ".substring(0,2);
     if(textik1.equals(textik2)) {

 .....
Nahlásit jako SPAM
IP: 217.112.161.–
EdaBeginner
~ Anonymní uživatel
2 příspěvky
26. 11. 2015   #5
-
0
-

Ahoj,
díky Ti za kód, zase je využitelný - je vidět, že tomu dost rozumíš. Jak jsi se Javu učil Ty? Mě přijde nejlepší mít ukázkové příklady, z nichž si pak člověk může poskládat třídu co potřebuje. Některé finty asi lze získat pouze praxí (viz. třeba ten ""t  ".substring(0,2)", na toto bych rozhodně sám nepřišel). Máš nějaký oblíbený webík? Já chodím na tutorialspoint.com, jenomže je tam nějak málo příkládků k jednotlivým třídám a metodám a na nějakou vyloženou fintu jsem ještě nenarazil, byť je to čtivé a hezky udělané. Ta "originální" Oracle dokumentace je zase dost suchá a předpokládá se už znalost věci. Mě by vyhovoval spíš nějaký ukázkový "seznam" vytvořených tříd s příslušnými metodami - například zde String a tam všechny (nebo hodně) ukázek aplikací včetně různých metod a fint. Nevíš o něčem?

Nahlásit jako SPAM
IP: 78.136.147.–
NotBeginner
~ Anonymní uživatel
181 příspěvků
27. 11. 2015   #6
-
0
-

Programovat,programovat a zase programovat.

knížky(např. v česku Herouty,Java výukový kurz, a pak samozřejmě US knihy), stackoverflow, apod...

Nahlásit jako SPAM
IP: 217.112.161.–
Petr
~ Anonymní uživatel
697 příspěvků
27. 11. 2015   #7
-
0
-

#3 EdaBeginner
- cannot find symbol = syntakticka chyba, zpusobena napriklad preklepem v nazvu promenne, funkce atd. Proste prekladac nemuze najit definici neceho a mas tam napsane co nemuze najit a zpravidla i radek na kterem to je. Staci si to precist

- cannot return a value from method whose result type is void = opet si to staci precist, snazis se vracet pomoci return hodnotu z metody, ktera ma navratovy typ void (tedy nema vracet nic), bud definuj navratovy typ a nebo odstran ten return z metody

- jak uz bylo zmineno operator porovnani == nelze pouzit k porovnani obsahu objektu, tento operator pokud je pouzit nad objekty neporovnava obsah ale reference na ne. Tedy jinymi slovy zjistuje jestli se jedna o ten samy objekt v pameti. Ve tvem pripade mas dva ruzne objekty, jeden za tebe vytvori prekladac ze stringoveho literalu "t", druhy vznikne v dobe behu programu. Na dva ruzne objekty je nutne pouzit equals metodu, pripadne jinou metodu, ktera je urcena k porovnani techto dvou objektu.

- pokud si chces hrat se stringy tak doporucuji nastudovat co za metody ma trida String viz http://docs.oracle.com/javase/7/docs/api/java/lang/String.html pro to o co se pokousis by se ti mohly hodit metody jako startsWith, endsWith, indexOf, trim, length a pripadne dalsi. Pro nejake komplikovanejsi operace pak existuji knihovny napr. apache commons StringUtils https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html a mnoho dalsich, ale myslim, ze si vystacis s tim co poskytuje trida String.

Nahlásit jako SPAM
IP: 83.240.112.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 21 hostů

Podobná vlákna

Problem s C++ — založil ower

Problem — založil roonill

Problem s LIKE — založil Lordest

Problém v C++ — založil Honza

Problém s FF — založil Janina

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý