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?
Fórum › Java
Problém s sc.nextLine() / if()
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")) {
.....
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 :-)
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)) {
.....
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?
Programovat,programovat a zase programovat.
knížky(např. v česku Herouty,Java výukový kurz, a pak samozřejmě US knihy), stackoverflow, apod...
#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.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Problem — založil Ghosta
Problém — založil pali6
Problém v C — založil Robin
Problem s C++ — založil ower
Moderátoři diskuze