2017-05-21 5 views
4

Ich versuche, etwas zu schreiben, um ein bestimmtes Objekt zu erstellen, wenn es mit den Werten übereinstimmt, die der Benutzer eingibt.Benutzereingabe zum Erstellen von Objekten

Zum Beispiel:

nehme ich an Klasse Person und Car-Klasse haben

public class Person 
{ 
    private int x, y ,z; 
    private String str; 

    //Constructors etc 
} 
public class Car 
{ 
    private int x,y,z; 
    private double doub; 

    //Constructors etc 
} 

Der Benutzer zur Eingabe von 4 verschiedenen Werten gefragt wird. Die ersten drei Felder von Person und Car sind identisch, aber wenn der vierte Wert ein String oder ein Double ist, sollte das Programm das passende Objekt erstellen.

public class Input 
{ 
    public static void main (String args[]) 
    { 
     int x,y,z; 
     ?? other; //how do i declare if its either a double or string 

     Scanner input = new SCanner(System.in); 
     x = input.nextInt(); 
     // y, z input 
     other = input.??? //String or double 

     //Create matching object 
    } 
} 

Wie gehe ich vor?

+0

Überprüfen Sie, ob Sie es als Doppel analysieren kann: http://stackoverflow.com/questions/3543729/how-to-check-that-a-string-is-parseable-to-a-double – alejandrogiron

Antwort

3

Sie matches können Sie überprüfen, ob Ihre Eingabe Doppel- oder ein String ist zum Beispiel:

Scanner input = new Scanner(System.in); 
String other = input.nextLine(); 
if (other.matches("\\d+\\.\\d+")) { 
    //your input is double 
    Double d = Double.parseDouble(other); 
    System.out.println("double = " + d); 

} else { 
    //your intput is a Strings 
    System.out.println(other); 
} 
0

Sie können andere als String als global deklarieren und dann überprüfen, ob es doppelt ist, Sie können es in einer doppelten Variable speichern.

 Scanner input = new SCanner(System.in); 
    x = input.nextInt(); 
    // y, z input 
    string other = input.next() 
0

Versuchen Sie dies mit instanceof Schlüsselwort.

 System.out.println("Enter value"); 
     String userIn = new Scanner(System.in).nextLine(); 

     try { 
      if ((Double) Double.parseDouble(userIn) instanceof Double) { 
       System.out.println("Double value is entered."); 
       //Write your code here if it is double 
      } else if (userIn instanceof String) { 
       System.out.println("String is entered"); 
       //Write your code here if it is String 
      } 
     } catch (NumberFormatException ex) { 
      System.out.println("String is entered"); 
      //Write your code here if it is String 
     } 
1

Sie object für Art und instanceof zur Überprüfung

Scanner input = new SCanner(System.in); 
x = input.nextInt(); 
// y, z input 
string other = input.next(); 
Double d = null; 
try { 
    d = Double.parseDouble(other); 
} catch (NumberFormatException e) { 

} 
0

Zuerst erstellen können eine einfache String Benutzereingaben zu erfassen, danach versuchen, es in eine double zu analysieren. Wenn es es analysieren kann, bedeutet dies, dass ein gültiges Double eingegeben wurde und keine Ausnahme ausgelöst wird, mit anderen Worten, es wird den Code im try Block ausführen. Wenn es nicht analysiert werden kann (löst eine Ausnahme aus), wird der Code im Block catch ausgeführt.

Beispiel:

public static void main(String[] args) { 

    Scanner kbd = new Scanner(System.in); 
    System.out.println("Enter something..."); 
    String userInput = kbd.next(); 
    Car car = null; // create empty Car object to be able to use it outside of the try/catch block 
    Person person = null; // create empty Person object to be able to use it outside of the try/catch block 

    try { 
     double d = Double.parseDouble(userInput); 
     car = new Car(); 
    } catch (NumberFormatException e) { 
     person = new Person(); 
    } 

    // Ask user for new input and assign it to either Car or Person object as you develop your program... 

} 
0

Ein weiterer Weg, um Ihre Eingabe zu bestätigen ist eine einfache try-catch, zum Beispiel zu verwenden:

Scanner input = new Scanner(System.in); 
String other = input.nextLine(); 
Car car = null; 
Person person = null; 

try { 
    // Is your input double 
    Double d = Double.parseDouble(other); 
    System.out.println("double = " + d); 

    car = new Car(); 
    // ******* Write your statements to handle Car here ******* 

} catch (NumberFormatExaception nfe) { 
    //your intput is a String 
    System.out.println(other); 

    person = new Person(); 
    // ******* Write your statements to handle Person here ******* 

} 
Verwandte Themen