Er zijn verschillende manieren om dubbele waarden in te voeren bij het programmeren in Java, afhankelijk van of u vanaf de console of vanuit een bestand leest.
1. `Scanner` gebruiken (voor console-invoer):
Dit is de meest gebruikelijke methode om gebruikersinvoer van de console te verkrijgen.
```java
java.util.Scanner importeren;
openbare klasse DoubleInput {
public static void main(String[] args) {
Scannerscanner =nieuwe scanner (System.in);
System.out.print("Voer een dubbele waarde in:");
// Gebruik nextDouble() om een double te lezen
dubbel doubleValue =scanner.nextDouble();
System.out.println("Je hebt ingevoerd:" + doubleValue);
scanner.close(); // Belangrijk:Sluit de scanner als u klaar bent
}
}
```
Belangrijke overwegingen bij `Scanner`:
* Foutafhandeling: `nextDouble()` genereert een `InputMismatchException` als de gebruiker iets invoert dat geen geldige double is (bijvoorbeeld tekst). U moet deze uitzondering afhandelen met een `try-catch`-blok om te voorkomen dat uw programma crasht:
```java
java.util.InputMismatchException importeren;
java.util.Scanner importeren;
openbare klasse DoubleInputWithExceptionHandling {
public static void main(String[] args) {
Scannerscanner =nieuwe scanner (System.in);
System.out.print("Voer een dubbele waarde in:");
dubbele dubbeleWaarde;
poging {
doubleValue =scanner.nextDouble();
} catch (InputMismatchException e) {
System.out.println("Ongeldige invoer. Voer een geldig dubbel in.");
scanner.volgende(); // Verbruik de ongeldige invoer
opbrengst; //of behandel de fout op een andere manier
}
System.out.println("Je hebt ingevoerd:" + doubleValue);
scanner.close();
}
}
```
* `scanner.next()`: De aanroep `scanner.next()` binnen het `catch`-blok is cruciaal. Als er een `InputMismatchException` optreedt, blijft de ongeldige invoer in de buffer van de `Scanner`. `scanner.next()` verbruikt deze ongeldige invoer, waardoor het programma de gebruiker opnieuw kan vragen zonder vast te lopen in een oneindige lus.
2. `BufferedReader` gebruiken (voor console- of bestandsinvoer):
`BufferedReader` is efficiënter voor grote invoer, maar vereist meer handmatige parsering.
```java
java.io.BufferedReader importeren;
java.io.IOException importeren;
java.io.InputStreamReader importeren;
openbare klasse DoubleInputBufferedReader {
public static void main(String[] args) {
BufferedReader-lezer =nieuwe BufferedReader (nieuwe InputStreamReader (System.in));
System.out.print("Voer een dubbele waarde in:");
poging {
Tekenreeksinvoer =reader.readLine();
double doubleValue =Double.parseDouble(invoer);
System.out.println("Je hebt ingevoerd:" + doubleValue);
} catch (IOException e) {
System.out.println("Fout bij lezen invoer:" + e.getMessage());
} catch (NumberFormatException e) {
System.out.println("Ongeldige invoer. Voer een geldig dubbel in.");
}
}
}
```
Deze methode gebruikt `Double.parseDouble()` om de tekenreeksinvoer naar een dubbel te converteren. Het omvat ook foutafhandeling voor zowel `IOException` (invoer-/uitvoerfout) als `NumberFormatException` (ongeldig getalformaat).
3. Opdrachtregelargumenten:
U kunt een dubbele waarde doorgeven als opdrachtregelargument wanneer u uw Java-programma uitvoert.
```java
openbare klasse DoubleInputCommandLine {
public static void main(String[] args) {
als (args.lengte> 0) {
poging {
double doubleValue =Double.parseDouble(args[0]);
System.out.println("Je hebt ingevoerd:" + doubleValue);
} catch (NumberFormatException e) {
System.out.println("Ongeldige invoer. Geef een geldige double op als opdrachtregelargument.");
}
} anders {
System.out.println("Geef een dubbele waarde op als opdrachtregelargument.");
}
}
}
```
Vergeet niet om dit als volgt vanaf uw terminal te compileren en uit te voeren:`java DoubleInputCommandLine 3.14159`
Kies de methode die het beste bij uw behoeften past en vergeet niet om altijd een robuuste foutafhandeling op te nemen om uw programma veerkrachtiger te maken. De 'Scanner'-benadering heeft over het algemeen de voorkeur vanwege de eenvoud en de ingebouwde mogelijkheden voor foutafhandeling bij het ontvangen van invoer van de console. `BufferedReader` biedt betere prestaties voor grote bestanden. Opdrachtregelargumenten zijn handig voor het leveren van invoer bij het uitvoeren van het programma vanaf de terminal. |