IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
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
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
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.