C# 为某些数字创建文本分析
我有一个文本框,我想用它来检测某些数字(1-65),这些数字附加了一个值,以便用这个值进行数学运算 示例:当用户键入数字“50”时,我想将其与值4500(504500)相关联 因此,对于每个数字1-65,我想分配一个特定的值,然后当用户键入一个数字1-65时,程序将获取相关的值并将其分配给一个变量,这样我就可以进行数学运算C# 为某些数字创建文本分析,c#,C#,我有一个文本框,我想用它来检测某些数字(1-65),这些数字附加了一个值,以便用这个值进行数学运算 示例:当用户键入数字“50”时,我想将其与值4500(504500)相关联 因此,对于每个数字1-65,我想分配一个特定的值,然后当用户键入一个数字1-65时,程序将获取相关的值并将其分配给一个变量,这样我就可以进行数学运算 int lvl50 = 4500; lvl50 = clvl; tolvl = clvl - currentexp; int ttlvl = (tlvl / ptexp)
int lvl50 = 4500;
lvl50 = clvl;
tolvl = clvl - currentexp;
int ttlvl = (tlvl / ptexp) +1;
我在找这样的东西。我想你可以用
字典
使用用户输入:
var input = int.Parse(textBox1.Text);
var value = values[input];
int input, value;
if(int.TryParse(textBox1.Text, out input)){
if(values.Contains(input){
value = values[input];
}
}
或者使用TryParse
和ContainsKey
方法来避免可能的异常
int input = -1;
if(int.TryParse(textBox1.Text, out input) && values.ContainsKey(input))
{
var value = values[input];
}
我能想到的一种方法是使用一本字典
;
加上(504500);:
var values=newdictionary();
增加(504500);
// ... 等
创建公式/函数:
如果数字1-65的值有任何公式,则可以使用创建一个方法来实现该公式值以使用它
示例:
public static int myFormula(int number)
{
return number * 90;
}
var myDic = Dictionary<int, int>() {
new { 1, 1 },
new { 50, 4500 },
};
字典:
如果以下数字匹配值没有任何可见公式,则可以使用字典
将其匹配为特定值
示例:
public static int myFormula(int number)
{
return number * 90;
}
var myDic = Dictionary<int, int>() {
new { 1, 1 },
new { 50, 4500 },
};
var myDic=Dictionary(){
新的{1,1},
新{504500},
};
从您的代码片段来看,(在我看来)您可能正在根据键计算字典中的值。您可以将计算值的逻辑放在单独的方法中:
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
像其他答案所建议的那样使用字典对你很有用,但是如果你的数字1-65没有空白,你可以使用列表(甚至是一个简单的数组)。列表的索引将作为您的输入。这将比字典更容易、更有效
var values = new List<int> { 1000 , 4500 };
一旦我得到了这个,我如何将值“4500”分配给一个变量?@Advancinint myVariable=values[50]
您应该使用TryParse
和TryGetValue
来处理错误的用户输入。我已经用原始答案处理了它,但是如果我tr使用TryParse
和TryGetValue
我会得到一个错误声明clvl
与声明Leveling_Estimator.Form1.clvl冲突,我不知道为什么。我认为答案可以通过使用Dictionary
来改进,这样您就不必解析文本输入,但如果文本无效,您将不得不处理IndexOutOfRangeException
(或字典抛出的内容)。
int input, value;
if(int.TryParse(textBox1.Text, out input)){
if(values.Contains(input){
value = values[input];
}
}