2017-12-31 31 views
-3

int値1,2および3をStringにマップすると、 "Small(300)"、 "Medium(600)"および "大(1200) "ですか?int値を文字列値にマップする方法

public static int newPackageDeal(String msg, String error) 
{ 
    int packageDeal; 

    do 
    { 
     System.out.println(msg);     
     packageDeal = in.nextInt();     
    } 
    while (packageDeal != 1 && packageDeal != 2 && packageDeal != 3); 

    return packageDeal; 
} 
+2

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html –

+1

@JBNizetを超える場合 – Christian

+0

@Christian単純なこと最初のスイッチのために行っているはずです。 –

答えて

2

あなたはswitchステートメントを使用することができます、あなたが文字列に取引の整数をマッピングするためのプログラムで長期的な必要性を持っていた場合、あなたは、データベーステーブル内のこれらの関係を保存するかもしれない

String output; 
switch (packageDeal) { 
    case 1: 
     output = "Small (300)"; 
     break; 

    case 2: 
     output = "Medium (600)"; 
     break; 

    case 3: 
     output = "Large (1200)"; 
     break; 

    default: 
     output = "NA"; 
} 

、およびJavaコードのどこかにマップを作成します。そして、必要なときには常に文字列の説明を検索するだけです。

1

ハッシュマップを使用して、出力値を数値に格納できます。

HashMap<Integer,String> map = new HashMap<Integer,String>(); 
map.put(1,"Small (300)"); 
map.put(2,"Medium (600)"); 
map.put(3,"Large (1200)"); 

次に、newPackageDeal()メソッド内のpackageDealに基づいて出力値を返します。

public static String newPackageDeal(String msg, String error) 
{ 
    int packageDeal; 

    do 
    { 
     System.out.println(msg);     
     packageDeal = in.nextInt();     
    } 
    while (packageDeal != 1 && packageDeal != 2 && packageDeal != 3); 

    return map.get(packageDeal); 
} 
1

マップには、番号でインデックスを付けます。

これはif/elseswitchステートメントを使用するよりも拡張可能であり、whileの状態がより明確になります。

public static String newPackageDeal(String msg, String error) 
{ 
    Map<Integer, String> dealsByNumber = new HashMap<>(); 
    dealsByNumber.put(1, "Small (300)"); 
    dealsByNumber.put(2, "Medium (600)"); 
    dealsByNumber.put(3, "Large (1200)"); 
    // Easy to extend with other deals later on! 

    Scanner in = new Scanner(System.in); 

    int packageDeal; 

    do 
    { 
     System.out.println(msg); 
     packageDeal = in.nextInt(); 
    } 
    while (!dealsByNumber.containsKey(packageDeal)); 

    return dealsByNumber.get(packageDeal); 
} 
+0

それを試しましたが、何らかの理由でまだ整数を出力しています:/ – Gasly

+0

もちろん、私は間違いを犯しました。私のポストを修正しました。 – Ward

関連する問題