Ich habe Java-Code geschrieben, der Scanner hat. Was es tun soll, ist 2 Eingänge zu bekommen und dann die Mathematik zu tun. Das Problem ist, dass der zweite Scanner nicht richtig funktioniert. Es führt automatisch die else-Anweisung aus, ohne nach Eingabe zu fragen.Der zweite Scanner ignoriert Eingabe
package stuff;
import java.util.Scanner;
public class Diagonal {
public static void main(String[] args) {
double a = Math.pow(getHeight(), 2);
System.out.println(a);
double b = Math.pow(getWidth(), 2);
double c = a + b;
System.out.println(Math.sqrt(c));
}
static double getWidth() {
Scanner scan = new Scanner(System.in);
System.out.println("Enter the width.");
double width;
if(scan.hasNextDouble()) {
width = scan.nextDouble();
}
else {
System.out.println("Sorry, there was an error!");
width = 0;
}
scan.close();
return width;
}
static double getHeight() {
Scanner scan2 = new Scanner(System.in);
System.out.println("Enter the height");
double height;
if(scan2.hasNextDouble()) {
height = scan2.nextDouble();
}
else {
System.out.println("Sorry, there was an error!");
height = 0;
}
scan2.close();
return height;
}
}
Hinweis: Verwenden Sie nur einen Scanner und übergeben Sie ihn an beide Methoden. – Sanjeev
Sie schließen den Eingabestream, den Sie nicht ausführen können, wenn Sie erwarten, dass mehr Daten aus dem Eingabestream abgerufen werden. –