Witam. W sumie od dnia dzisiejszego rozpocząłem naukę języka Java. Wcześniej miałem kontakt tylko z c++ i napisałem sobie taki program (stopniowo rozbudowuję, aby uczyć się działania konkretnych poleceń):
import java.util.Scanner; // instrukcja importu. Konieczna do obiektu Scanner
public class WitajSwiecie {
public static void main(String[] args) {
// TODO Auto-generated method stub
String wpisane_imie; // zmienna, do której wprowadzamy imię
double deklarowany_dochod; // zmienna do której wprowadzimy liczbę zmiennoprzecinkową
double podwyzka = 500.65;
double kwota_po_podwyzce;
Scanner wpisz = new Scanner(System.in); //obiekt do odebrania danych od użytkownika
System.out.print("Wprowadz swoje imię: ");
wpisane_imie = wpisz.nextLine(); // odebranie od użytkownika jednej linii znaków, czyli tekstu zakończonego klawiszem enter
System.out.print("Podaj jeszcze swój dochód z groszami: ");
deklarowany_dochod = wpisz.nextDouble(); // odebranie od użytkownika liczby zmiennoprzecinkowej
kwota_po_podwyzce = deklarowany_dochod + podwyzka;
System.out.println("Witaj " + wpisane_imie + ". Twój dochód został podwyższony o " + podwyzka + " i wynosi teraz " + kwota_po_podwyzce + ".");
}
}
Działanie jest proste:
- użytkownik wpisuje swoje imię
- wprowadza swój dochód, może być z wartościami dziesiętnymi lub setnymi po przecinku
- jego dochód zostaje powiększony o "podwyżkę"
Poniżej przykład, jak działa program:
Wprowadz swoje imię: Mariusz
Podaj jeszcze swój dochód z groszami: 678,14
Witaj Maciej. Twój dochód został podwyższony o 500.65 i wynosi teraz 1178.79.
Wszystko się zgadza, jeśli ułamki są po przecinku (np. 333,15). Jeśli wartość zostanie wpisana z kropką (np. 333.15) to pojawia się błąd:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at WitajSwiecie.main(WitajSwiecie.java:21)
Dodam, że używam środowiska Eclipse w najnowszej dostępnej wersji. Czy jest to możliwe tylko za pomocą "getInstance();" ? Chciałbym, aby było możliwe użycie ZARÓWNO przecinka JAK I kropki. Czy po prostu stworzyć funkcję (klasę?) zamieniającą liczbę double na string, zamiana kropek na przecinki (i na odwrót - zależnie jak sobie zażyczę) i ponowną zamianę zmiennej na double (jeśli to w ogóle możliwe)?
Z góry dziękuję za pomoc.