2014-02-21 18 views
0

我有一個文本框,我想用它來檢測某些數值(1 - 65),這些數字附加值與數值做數學運算。爲某些數字創建文本解析

示例:當用戶輸入數字「50」時,我想將其與值4500(50,4500)關聯。

因此,對於每個數字1-65我想分配一個特定的值,然後當用戶鍵入一個數字1-65程序採取相關的值,並將其分配給一個變量,所以我可以做數學。

int lvl50 = 4500; 
lvl50 = clvl; 

tolvl = clvl - currentexp; 
int ttlvl = (tlvl/ptexp) +1; 

我在找這樣的事情。

回答

1

我想你可以使用一個Dictionary<int,int>

var values = new Dictionary<int,int> { { 1, 1000 }, { 50, 4500 } ... }; 

然後你就可以得到一個數字

values[50] // returns 4500 

的用戶輸入相應的值:

var input = int.Parse(textBox1.Text); 
var value = values[input]; 

或者使用TryParseContainsKey避免方法可能例外

int input = -1; 
if(int.TryParse(textBox1.Text, out input) && values.ContainsKey(input)) 
{ 
    var value = values[input]; 
} 
+0

一旦我有了這個,我怎麼分配值「4500」給一個變量? – Advancin

+0

@Advancin'int myVariable = values [50];' –

+0

您應該使用'TryParse'和'TryGetValue'來處理不好的用戶輸入。 –

0

一個我能想到的方法是使用System.Collections.Generic下發現了一個Dictionary<TKey, TValue>的; values.Add(50,4500);:

var values = new Dictionary<int, int>(); 
values.Add(50, 4500); 
// ... etc 
0

創建公式/功能: 如果數字1-65值有任何公式,比你可以使用創建將實現公式的方法價值爲了使用它。

例子:

public static int myFormula(int number) 
{ 
    return number * 90; 
} 

詞典: 如果下面的號碼匹配的值沒有任何可見的配方比你可以使用Dictionary<int, int>與它們匹配的特定值。

例子:

var myDic = Dictionary<int, int>() { 
    new { 1, 1 }, 
    new { 50, 4500 }, 
}; 
0

從您的代碼段,它看起來(我)像你可能被計算基於密鑰字典中的價值。你可以放置邏輯用於在單獨的方法計算的值:

private int CalculateValue(int x) 
{ 
    // calculate value and return it 
} 

然後創建一個字典像這樣的特定範圍內的數字:

var dict = Enumerable.Range(1, 65).ToDictionary(x => x, CalculateValue); 

從字典中使用的元件,只是使用密鑰引用它:

var matchingValue = dict[50]; // Lookup key 50 

如果可能的關鍵可能不存在,你可以測試它:

var value = dict.ContainsKey(72) ? dict[72] : -1; // Assign some default value 
0

使用像其他答案建議的字典將爲你工作,但如果你的數字1-65沒有差距,你可以使用一個列表(甚至是一個簡單的數組)。列表的索引將是您的輸入。這比詞典更容易,更高效。

var values = new List<int> { 1000 , 4500 }; 

然後你就可以獲取用戶輸入的相應值:

int input, value; 
if(int.TryParse(textBox1.Text, out input)){ 
    if(values.Contains(input){ 
    value = values[input]; 
    } 
}