2017-05-21 12 views
4

ユーザーが入力した値と一致する場合、特定のオブジェクトを作成するためのコードを作成しようとしています。例えばオブジェクトを作成するためのユーザー入力

は、私は、ユーザーが入力4つの異なる値に頼まれたPersonクラスとCarクラス

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 
} 

があるとします。 PersonとCarの最初の3つのフィールドは同じですが、4番目の値がStringまたはdoubleの場合、プログラムは一致するオブジェクトを作成する必要があります。

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 
    } 
} 

どうすればよいですか?

+0

あなたはdoubleとしてそれを解析することができますかどうかをチェックします。http:/ /stackoverflow.com/questions/3543729/how-to-check-that-a-string-is-parseable-to-a-double – alejandrogiron

答えて

3

あなたは、あなたの入力は、二重または、例えば文字列であるかどうかを確認するためにmatchesを使用することができます。

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

他の文字列をグローバルとして宣言し、それが2倍の場合はチェックしてダブル変数に保存することができます。

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

instanceofというキーワードを使用してください。

 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

あなたが最初に作成

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

をチェックするためのタイプとinstanceofためobjectを使用することができます単純なStringを入力して、それを解析してdoubleに解析してください。解析できれば、有効なdoubleが入力され、例外はスローされない、つまりtryブロックのコードが実行されることを意味します。解析できない場合(例外がスローされた場合)、catchブロック内のコードが実行されます。

例:

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

あなたの入力を検証するもう一つの方法は、例えば、簡単なtry-catchを使用することです:

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 ******* 

} 
関連する問題