Exception in thread "main" java.util.InputMismatchException

Status
Niet open voor verdere reacties.

bassie1

Gebruiker
Lid geworden
27 jul 2007
Berichten
80
Ik ben bezig Java te leren, met behulp van het boek Introduction to Java programming.
Op een gegeven moment is er een voorbeeld, waarbij je een bedrag in euro/dollar kunt invullen en dan het aantal kwartjes/dubbeltjes etc berekend wordt. Bij hele bedragen (5, 10, 11) lukt dat prima, maar als ik dan bijvoorbeeld 5.00 of 5.24 invult dan krijg ik de volgende foutmelding:

Code:
Exception in thread "main" java.util.InputMismatchException
	at java.util.Scanner.throwFor(Scanner.java:909)
	at java.util.Scanner.next(Scanner.java:1530)
	at java.util.Scanner.nextDouble(Scanner.java:2456)
	at ComputeChange.main(ComputeChange.java:10)

Omdat dit ook bij het voorbeeld op de website van de schrijver van het boek gebeurt, lijkt me dat het niet aan het voorbeeld zelf ligt, maar aan mijn computer.
Ik gebruik Notepad++, en als compiler de standaard java jdk (1.7.0).

Code:
import java.util.Scanner;

public class ComputeChange {
  public static void main(String[] args) {   
    // Create a Scanner
    Scanner input = new Scanner(System.in);

    // Receive the amount 
    System.out.print(
      "Enter an amount in double, for example 11.56: ");
    double amount = input.nextDouble();

    int remainingAmount = (int)(amount * 100);

    // Find the number of one dollars
    int numberOfOneDollars = remainingAmount / 100;
    remainingAmount = remainingAmount % 100;

    // Find the number of quarters in the remaining amount
    int numberOfQuarters = remainingAmount / 25;
    remainingAmount = remainingAmount % 25;

    // Find the number of dimes in the remaining amount
    int numberOfDimes = remainingAmount / 10;
    remainingAmount = remainingAmount % 10;

    // Find the number of nickels in the remaining amount
    int numberOfNickels = remainingAmount / 5;
    remainingAmount = remainingAmount % 5;

    // Find the number of pennies in the remaining amount
    int numberOfPennies = remainingAmount;

    // Display results
    String output = "Your amount " + amount + " consists of \n" + 
      "\t" + numberOfOneDollars + " dollars\n" + 
      "\t" + numberOfQuarters + " quarters\n" +
      "\t" + numberOfDimes + " dimes\n" + 
      "\t" + numberOfNickels + " nickels\n" +
      "\t" + numberOfPennies + " pennies";
    System.out.println(output);
  }
}
 
Het probleem zit hem in de komma. Hier in Europa scheiden wij decimalen van gehele getallen door middel van een , en niet een . zoals jij doet. In de Verenigde Staten scheiden ze de decimalen wel d.m.v. punten. Je zou dus gewoon een komma kunnen gebruiken bij de invoer van je programma (bijv. 12,60), maar je kan ook de NumberFormat gebruiken, om aan te geven hoe een getal moet worden geformat, hierdoor kan je dus op "VS-wijze" formatten. Neem een kijkje naar de volgende links (in volgorde).

http://stackoverflow.com/questions/...rrency-amount-us-or-eu-to-float-value-in-java (De post van Michael Petrotta).

http://download.oracle.com/javase/1...at.html#getCurrencyInstance(java.util.Locale)

Met vriendelijke groet,
Bram
 
Laatst bewerkt:
Bedankt voor je antwoord (met uitgebreide uitleg), met een komma werkt het inderdaad.
Op school en op bijv. rekenmachines ben ik gewend een punt te gebruiken, ik denk dat ik daardoor het ook automatisch hier deed. En in het Engelse boek staat het natuurlijk ook met een punt.

Bas
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan