NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze: class Scanner

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
Avatar
jip123
Člen
Avatar
jip123:13.11.2019 20:45

Mám tento problém: zkouším si některé kódy z učebnice Introduction to Java™ Programming by Liang. Uvádím jeden zjednodušený příklad:

import java.util.Scanner;

public class Number {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);

double number1 = 0;

System.out.prin­t("Enter first value: ");

number1 = input.nextDouble();

System.out.prin­tf("You entered number %s \n", number1);
}

Když program přeložím a vložím nějaký double number1 z klávesnice, např 5., vyhodí mně to chyby:

"C:\Program Files\JetBrain­s\IntelliJ IDEA 2019.2.3\jbr\bin\j­ava.exe" "-javaagent:C:\Pro­gram Files\JetBrain­s\IntelliJ IDEA 2019.2.3\lib\i­dea_rt.jar=52930:C­:\Program Files\JetBrain­s\IntelliJ IDEA 2019.2.3\bin" -Dfile.encoding=UTF-8 -classpath "H:\Intellij\In­troduction to Java_Liang\sma­zat\out\produc­tion\smazat" com.company.Number
Enter first value: 5.
Exception in thread "main" java.util.Input­MismatchExcep­tion
at java.base/java­.util.Scanner­.throwFor(Scan­ner.java:939)
at java.base/java­.util.Scanner­.next(Scanner­.java:1594)
at java.base/java­.util.Scanner­.nextDouble(Scan­ner.java:2564)
at com.company.Num­ber.main(Number­.java:14)

Process finished with exit code 1

Je zajímavé, že pokud tam dám číslo např. 5 bez desetinné tečky, program projde.

Zkusil jsem: Z programu jsem udělal jen takovou kostru, abych eliminoval vše, co by mohlo vadit, a přece mně to stále vyhazuje chybu.
Hledal jsem i na internetu...

Chci docílit: Chci vědět, kde dělám chybu.

 
Odpovědět
13.11.2019 20:45
Avatar
Robert Michalovič:14.11.2019 7:36

Nemáš nastavenou americkou lokalizaci před načítáním. V Evropě se přeci desetinná tečka nepoužívá. Ve škole se přeci učí desetinná čárka.

proto ti to nefunguje s desetinou tečkou ale 100% ti to funguje s desetinou čárkou.

Pokud zadáš US lokalizaci, přestane fungovat desetinná čárka a začne fungovat desetinná tečka. např. takto

Scanner input = new Scanner(System.in);
input.useLocale(Locale.US);
double number1 = 0;
System.out.print("Enter first value: ");
number1 = input.nextDouble();
 
Nahoru Odpovědět
+1
14.11.2019 7:36
Avatar
Robert Michalovič:14.11.2019 8:18
  • než začneš něco používat např. formatový výstup tak se ho nejdříve nauč

https://www.itnetwork.cz/…-typy-string

 
Nahoru Odpovědět
+1
14.11.2019 8:18
Avatar
jip123
Člen
Avatar
jip123:14.11.2019 16:48

Děkuji všem, problém vyřešen.

 
Nahoru Odpovědět
14.11.2019 16:48
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 4 zpráv z 4.