2016-09-21 89 views
0

我有一個雞和雞蛋的問題。我用於動態打字(python),所以如果這是一件基本的事情,請對我溫柔。Java動態var分配給變量

我有一個掃描儀,但我想讓用戶輸入一個字符串或一個整數(1或'option1')。因爲它是用戶輸入,所以我不知道結果類型(int或string)。我需要從掃描器獲取用戶輸入,將其分配給一個變量,然後將該變量傳遞給重載方法。

問題是我需要聲明變量類型。但是,它可以是。我該如何處理?

編輯

爲了澄清,我想這樣做這樣的事情(下面是僞代碼):

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

只是讓它成爲'String'並檢查它是否只是數字或之後。如果它解析爲'int'。 – SomeJavaGuy

+0

我如何檢查它的數字,如果我把它作爲一個字符串?如果我把它作爲一個字符串wouldnt它是一個字符串? – 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」或「選項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 
}