2017-02-09 6 views
-2

Ich versuche, ein Java-Programm zu machen, wo es den Benutzer nach dem Durchmesser und der Höhe eines Zylinders fragt, wo es nur die Eingabe als positive ganze Zahl weniger als 2.147.483.648 nimmt, und berechnet dann ein Volumen und eine Fläche von diesem Eingang. Mein Problem ist, zu versuchen, die Benutzereingabe zu validieren, eine Fehlermeldung ("Bitte geben Sie einen ganzzahligen Wert (weniger als 2.147.483.648) als Dezimalzahl ein:") , wenn der Benutzer ein Wort oder eine ungültige Nummer eingibt und den Benutzer dann eingibt eine neue gültige Antwort.Wie füge ich im Eclipse Neon-Editor eine private Klasse innerhalb einer öffentlichen Klasse hinzu?

Ich habe versucht, eine private Klasse zu machen, wenn die Benutzereingabe zu überprüfen gültig war nach die Programme für die Benutzereingabe fragt die gleiche definierte ganze Zahlen mit (Durchmesser, Höhe nicht getan wird noch ...). Dies ist auch bevor die mathematischen Berechnungen durchgeführt werden, um das Volumen und die Oberfläche zu finden. Mein Problem ist, dass meine Klammern vom Eclipse-Editor als Fehler angezeigt werden, wenn ich versuche, die öffentliche Klasse nach den Volumen/SA-Formeln zu schließen. Entschuldigung für den langen Code. Vielen Dank im Voraus für jede Hilfe, sehr geschätzt.

import java.util.Scanner; 

    public class ContainerCalculator 
    { 
     public static void main(String[] args) 
     { 
      Scanner scnr = new Scanner(System.in); 
      int height = 0; 
      int diameter = 0; 
      double surfaceArea = 0.0; 
      double volume = 0.0; 
      double radius = 0.0; 
      System.out.println("Welcome to the Container Calculator!"); 
      System.out.println("===================================="); 

      //User prompts to get the diameter and height of the cylinder. 

      System.out.println("Enter the diameter of a cylinder (in centimeters): "); 
      diameter = scnr.nextInt(); 
      System.out.println(""); 

      System.out.println("Enter the height of a cylinder (in centimeters): "); 
      height = scnr.nextInt(); 
      System.out.println(""); 

     } 


     private static int inputChecker(Scanner scnr) { 
      int i = 0; 
      int diameter = -1; 
      int height = -1; 
      while (i==0){ 
       while (!scnr.hasNextInt()) { 
        System.out.println("Please enter an integer value (less than 2,147,483,648) as decimal: "); 
        scnr.nextLine(); 
       } 

       while (scnr.hasNextInt()){ 
        diameter = scnr.nextInt(); 
        // check to see if it is negative or past a 32-bit range (within range) 
        if ((diameter >= 0) && (diameter < 2147483647)) { 
         i++; 
         return diameter; 
        } 
        else { 
         System.out.println("Please enter an integer value (less than 2,147,483,648) as decimal digits: "); 
         scnr.nextLine(); 
        } 
       } 

      } 
      return -1; 
     } 




    //VOLUME CALCULATIONS: 
     radius = diameter/2.0; 
     volume = Math.PI * Math.pow(radius, 2.0) * height; 

     System.out.println("A can with a diameter of " + diameter + 
       " and a height of " + height + " has "); 
     System.out.print("\ta volume of "); 
     System.out.printf("%.2f", volume); 
     System.out.println(","); 

     //SURFACE AREA CALCULATIONS: 
     surfaceArea = (2.0 * Math.PI * radius * height) + (2.0 * Math.PI * Math.pow(radius, 2.0)); 

     System.out.print("\tand a surface area of "); 
     System.out.printf("%.2f", surfaceArea); 
     System.out.print("."); 
     System.out.println(""); 


     System.out.println("============================================="); 
     System.out.println("Thank you for using the Container Calculator."); 
} 
+0

Mögliche Duplikat [? Warum kann ich außerhalb einer Methode nicht tun Zuordnung] (http://stackoverflow.com/questions/12062481/why-cant- i-do-assignment-outside-a-method) – azurefrog

+0

Der gesamte Code muss in Methoden sein, der Code, der mit '// VOLUME CALCULATIONS 'beginnt, gehört nicht zu einer Methode. –

Antwort

1

Lesebenutzereingabe:

while (true) { 

// read line, e.g. String line = reader.readline(); 
// try to parse line as int, e.g. Integer.valueOf(line); if this does not throw an exception, break; 
// catch NumberformatException, print error, next try 

} 
Verwandte Themen