Podmínka if – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Podmínka if – Java – Fórum – Programujte.comPodmínka if – Java – Fórum – Programujte.com

 

Jan
~ Anonymní uživatel
187 příspěvků
8. 6. 2018   #1
-
0
-

Zdravím,jsem samouk jazyku Java a potřeboval bych prosím vás poradit, nevím si už rady. Když chci zadat podmínku if ... Podmínka bude platit když do a dosadím slovo ano, ale když dám do podmínky a = ano, tak mi to ukáže chybu. Našel by se tu někdo kdo by mi poradil? Vše co jsem našel na internetu se netýka slov ale čísel. tady to je pro ukázku jak to mám napsané

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in, "Windows-1250");
 System.out.println("Jste připraven na první otázku?");
 String a;
 a = sc.nextLine();
 if (a = ano) {
     System.out.println("tak se rovnou vrhneme na otázku!");
 }
 else {
     System.out.println("Tak tedy počkáme až budete připraven");
 }

děkuji za odpověď

Nahlásit jako SPAM
IP: 193.165.96.–
MilanL+1
Grafoman
8. 6. 2018   #2
-
0
-

#1 Jan
ano musí být v té podmínce v uvozovkách

a ještě bych to upravil

 a = sc.nextLine();

 a = a.toLowerCase();  - převede vstup na malá písmena kvůli tomu porovnávání
 if (a = "ano") {

nebo (vyzkoušej si to nebo co se ti bude víc líbit

if (a.toLowerCase() = "ano")

Nahlásit jako SPAM
IP: 185.112.167.–
gna
~ Anonymní uživatel
1891 příspěvků
8. 6. 2018   #3
-
+2
-
Zajímavé

Už z těch několika řádků nad tím je vidět, že řetězce se zapisují v uvozovkách.

A pak jedno rovnítko je pro přiřazení. Na test rovnosti je dvojité rovnítko (a == b).

Ale to by testovalo, jestli je na obou stranách operátoru ten samý objekt. Na porovnání řetězce podle obsahu je metoda equals. 

if (a.equals("ano"))
Nahlásit jako SPAM
IP: 213.211.51.–
MilanL+1
Grafoman
8. 6. 2018   #4
-
0
-

#3 gna
máš pravdu, a.Equals("ano")

docela mě to vytáčí když pendluju mezi jazykama a každej ty věci řeší jinak, od operátorů přes formátování, definice a přiřazování a jiné průběhy (např case of, u C se provede vše od návěstí dané hodnoty po Break tzn třeba i návěstí dalších hodnot, Delphi udělá jen to co je pro dané návěsti)

Nahlásit jako SPAM
IP: 185.112.167.–
Kit+15
Guru
8. 6. 2018   #5
-
0
-

#4 MilanL
Tyto problémy jsem si vyřešil ve Vimu přetížením maker a automatických oprav. V každém jazyce píši stejně a v rámci automatických korektur mi to Vim přepíše podle syntaxe daného jazyka. "fun" se mi v PHP přepíše na "function", ale v Pythonu se to opraví na "def". Mělo by to jít v každém lepším editoru/IDE.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:710d:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
ondrej39+1
Věrný člen
9. 6. 2018   #6
-
+1
-
Zajímavé
Kit +

#3 gna

V Jave se jeste doporucuje to porovnani u takovych stringu otacet na "ano".equals(a). Predbezne opatreni proti NullPointerException. :)

Nahlásit jako SPAM
IP: 78.45.199.–
Inject all the dependencies!
Lukáš
~ Anonymní uživatel
301 příspěvků
9. 6. 2018   #7
-
0
-

#1 Jan if(a=="ano")by mělo fungovat 2 = jsou kvůli rozlišení od definování nové hodnoty

Nahlásit jako SPAM
IP: 37.48.50.–
Kit+15
Guru
9. 6. 2018   #8
-
0
-

#7 Lukáš
Tak si to zkus, že if (a=="ano") nefunguje.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:7d7a:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Lukáš
~ Anonymní uživatel
301 příspěvků
9. 6. 2018   #9
-
0
-

#8 Kit
Zkoušel jsem, a co by na tom nemělo fungovat? mě to jde.

Nahlásit jako SPAM
IP: 37.48.50.–
Kit+15
Guru
9. 6. 2018   #10
-
0
-

#9 Lukáš
Ukaž. Načti si scannerem slovo "ano" a porovnej to == se stringem "ano". Vyjde ti false.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:7d7a:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
KIIV
~ Moderátor
+43
God of flame
9. 6. 2018   #11
-
0
-

#9 Lukáš
Java ma prakticky vse jako reference. Tim a == "ano" srovnavas, jestli je a umistene na stejnem miste jako "ano". Coz samozrejme neni. Teoreticky by se to mohlo stat, pokud si drive udelal  a = "ano"  a pak udelal  a == "ano". Ale to zalezi na optimalizaci jazyka.

Nahlásit jako SPAM
IP: 178.41.247.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kit+15
Guru
9. 6. 2018   #12
-
0
-

#11 KIIV
Nejen teoreticky. Pokud v Javě vytvoříš dva stringy "ano", Java to optimalizuje na jeden string se dvěma odkazy. Výsledkem je, že test na rovnost těchto stringů v prototypu dává true, ale pokud druhý string přijde z jiného datového zdroje, tak porovnání dá false. Je to docela zrádné.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:d46a:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Dumbo0
Newbie
29. 6. 2018   #13
-
0
-

A jak by to mělo vypadat třeba ve smyčce While když chci ze smyčky vyskočit po tom, co uživatel zmáčkne enter tedy vlastně zadá prázný řetězec? Protože takhle to neudělá nic :

} while (!string.equals(""));
Nahlásit jako SPAM
IP: 78.102.119.–
Kit+15
Guru
29. 6. 2018   #14
-
0
-

#13 Dumbo
V tom případě ten cyklus není potřebný a můžeš ho odstranit i s podmínkou.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:7886:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Dumbo0
Newbie
29. 6. 2018   #15
-
0
-

#14 Kit
No a když to chci třeba tak že uživatel z klávesnice zadává jména do té doby než zmáčkne enter tj zadá prázdný řetězec a zadávání tím má skončit?

Nahlásit jako SPAM
IP: 78.102.119.–
Kit+15
Guru
29. 6. 2018   #16
-
0
-

#15 Dumbo
Tak bych si především ověřil, co se do té proměnné dostane, když ten enter zadám. Kterou metodou ten vstup čteš?

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
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, 49 hostů

Podobná vlákna

Podmínka If C++ — založil Jonasberg

Podmínka where — založil spartan13

Podmínka IF — založil pawlik

IF A ELSE - podmínka — založil Morello

C++ podmínka — založil Selfer

Moderátoři diskuze

 

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