2016-09-21 20 views
0

私は鶏肉と卵の問題を抱えています。私は動的な型付け(Python)に使用していますので、これが基本的なものであれば私に優しくしてください。変数に割り当てられたJavaの動的変数

私はスキャナーを持っていますが、ユーザーが文字列または整数(1または 'option1')を入力できるようにします。それはユーザー入力であるため、結果の型(intまたはstring)はわかりません。私はスキャナからユーザ入力を取得し、それを変数に代入し、その変数をオーバーロードされたメソッドに渡す必要があります。

問題は、変数型を宣言する必要があることです。しかし、どちらでもかまいません。これをどうすれば処理できますか?明確にするために

EDIT

、私はこのような何かを考えていた(以下の疑似コードである):

public static float methodname(int choice){ 
//some logic here 
} 

public static float methodname(String choice){ 
//some logic here 
} 

Scanner input = new Scanner(System.in); 

choice = input.nextLine(); 

System.out.println(methodname(choice)); 

私がいる問題は、「選択」の宣言であります。私は何のために置くのですか?

+0

「文字列」にして、数字だけかどうかを確認してください。それが 'int'として解析されている場合。 – SomeJavaGuy

+0

文字列にすれば数値をチェックする方法は?もし私がそれを文字列にしたら、それは文字列ではありませんか? – PyNoob

+0

文字列 '' 1 ''には数字だけが含まれているため、intとして解析できます。文字列 '' option1 ''には文字列が含まれているため、文字列に変換することはできません。 – puhlen

答えて

1

Stringとし、intに変換してみてください。問題なく変換が行われる場合は、intバージョンを使用してください。それ以外の場合はStringバージョンを使用してください。

String stringValue = ... 

try { 
    // try to convert stringValue to an int 
    int intValue = Integer.parseInt(stringValue); 
    // If conversion is possible you can call your method with the int 
    call(intValue); 
} catch (NumberFormatException e) { 
    // If conversion can't happen call using the string 
    call(stringValue); 
} 
+0

重要なことですが、OPが "option1"または "option 1"を許可している場合は、残っているものを解析する前に番号ではないすべての文字を取り除く必要があります。 – Jacob

+0

@Jacobはい、私はstringValueが "1"で、 "オプション1"ではないと仮定しました。それが「オプション1」の場合、文字列バージョンが呼び出されます –

1

は、それは、あなたが数としてそれを使用し続けることができます解析した場合

String number = "1"; 
int result = Integer.parseInt(number); 

を使用して整数に変換し、文字列として入力された値を取ります。それが失敗すると、NumberFormatExceptionがスローされます。したがって、例外をキャッチして文字列で処理することができます。

try{ 
    String number = "option1"; 
    int result = Integer.parseInt(number); 
    // proceed with int logic 
} catch(NumberFormatException e){ 
    // handle error and proceed with string logic 
} 
関連する問題