在这种情况下,我试图将整数变量“ FileSizeType”的值输入到“ NomCategorie”下的方法中,然后将其转换为字符串(这就是注释所说明的内容)。
static int ChoisirCategory()
{
int FileSizeType;
Console.Write("What type do you want: ");
FileSizeType = Convert.ToInt32(Console.ReadLine());
return FileSizeType;
}
static string NomCategorie(int c)
{
//get FileSizeType into c
string FileType;
if (c == 1)
{
return FileType = "Small";
}
else if (c == 2)
{
return FileType = "Medium";
}
else if (c == 3)
{
return FileType = "Large";
}
else if (c == 4)
{
return FileType = "Huge";
}
else
{
return FileType="Non-valid choice";
}
答案 0 :(得分:0)
我建议使用枚举类
public enum Test
{
Small = 1,
Medium = 2,
Large = 3,
Huge = 4
}
然后您只需使用
即可转换数字int integer = 1;
if (Enum.IsDefined(typeof(Test), integer)
{
Console.WriteLine((Test)integer).
}
else
{
Console.WriteLine("Bad Integer");
}
output:
Small
答案 1 :(得分:0)
查看现有代码,您已经从FileSizeType
返回了ChoisirCategory
的值,因此可以将其捕获到变量中,然后将其传递给NomCategorie
方法获取类别名称,例如:
int categoryId = ChoisirCategory();
string categoryName = NomCategorie(categoryId);
请注意,还有许多其他可以改进的地方(例如,如果用户输入“ 2”而不是“ 2”会发生什么情况?),但是我认为这些建议可能超出问题范围
答案 2 :(得分:0)
如果您结合了以上两个建议,可以通过以下方式简化代码。我还添加了一个if子句以验证该值不高于可用值。
static enum AvailableSizes
{
Small = 1,
Medium = 2,
Large = 3,
Huge = 4
}
static int ChoisirCategory()
{
int FileSizeType;
GetInput:
Console.Write("What type do you want: ");
FileSizeType = Convert.ToInt32(Console.ReadLine());
// Ensure the value is not higher than expected
// (you could also check that it is not below the minimum value)
if (FileSizeType > Enum.GetValues(typeof(AvailableSizes)).Cast<int>().Max());
{
Console.WriteLine("Value too high.");
goto GetInput;
}
return FileSizeType;
}
static string NomCategorie(int c)
{
if (Enum.IsDefined(typeof(AvailableSizes), c)
{
return (AvailableSizes)c;
}
else
{
return "Invalid category";
}
}
然后在代码中的某处,您将使用此语句调用这些
string categoryStr = NomCategorie(ChoisirCategory());
Console.WriteLinte(categoryStr); // or do whatever you want with the returned value
使用此代码,如果输入大于4,则将输出“ Value too high”。然后再次询问问题,直到该值不大于4。
如果用户键入0或负值,则将输出“无效类别”。
这可能有助于您确定要在哪里处理输入错误:在用户输入之后或在将数字解析为字符串期间。