C# 插入了一个数字,我必须弹出一个带有数字版本的消息框

C# 插入了一个数字,我必须弹出一个带有数字版本的消息框,c#,.net,winforms,C#,.net,Winforms,如何修复此程序?插入了一个数字,我必须弹出一个带有数字版本的消息框。例如,如果键入“301”,则消息框必须显示“三零一”。以下是我所拥有的: string display = ""; for (int i = 0; i < txtNumber.Text.Length; i++) { if (txtNumber.Text[i] == 0) { display += "Zero "; } if (txtNumber.Te

如何修复此程序?插入了一个数字,我必须弹出一个带有数字版本的消息框。例如,如果键入“301”,则消息框必须显示“三零一”。以下是我所拥有的:

string display = "";            
for (int i = 0; i < txtNumber.Text.Length; i++)
{
    if (txtNumber.Text[i] == 0)
    {
        display += "Zero ";
    }

    if (txtNumber.Text[i] == 1)
    {
        display += "One ";
    }

    if (txtNumber.Text[i] == 2)
    {
        display += "Two ";
    }

    if (txtNumber.Text[i] == 3)
    {
        display += "Three ";
    }

    if (txtNumber.Text[i] == 4)
    {
        display += "Four ";
    }

    if (txtNumber.Text[i] == 5)
    {
        display += "Five ";
    }

    if (txtNumber.Text[i] == 6)
    {
        display += "Six ";
    }

    if (txtNumber.Text[i] == 7)
    {
        display += "Seven ";
    }

    if (txtNumber.Text[i] == 8)
    {
        display += "Eight ";
    }

    if (txtNumber.Text[i] == 9)
    {
        display += "Nine ";
    }               
}

MessageBox.Show(display);
字符串显示=”;
for(int i=0;i

错误列表上没有显示错误,但每当我运行它并键入一个数字并按enter键时,消息框就会弹出,其中没有任何内容。什么都可以。多谢各位

Text[i]
是一个自动转换为
int
的字符。例如,由于
'0'
代码不是0,所以没有显示任何内容。将所有
if
更改为字符对字符比较:

if (txtNumber.Text[i] == '0')

您也可以考虑使用<代码>开关>代码>构造。

<代码>文本[i] <代码>是一个被自动转换为<代码> int <代码>的字符。例如,由于

'0'
代码不是0,所以没有显示任何内容。将所有
if
更改为字符对字符比较:

if (txtNumber.Text[i] == '0')
var numToText = new Dictionary<int, string>() { {'0', "Zero "}, ...};
foreach (var char in txtMessage.Text)
{
    display += numToText[char];
}

您也可以考虑使用<代码>开关>代码>构造。

<代码>文本[i] <代码>是一个被自动转换为<代码> int <代码>的字符。例如,由于

'0'
代码不是0,所以没有显示任何内容。将所有
if
更改为字符对字符比较:

if (txtNumber.Text[i] == '0')
var numToText = new Dictionary<int, string>() { {'0', "Zero "}, ...};
foreach (var char in txtMessage.Text)
{
    display += numToText[char];
}

您也可以考虑使用<代码>开关>代码>构造。

<代码>文本[i] <代码>是一个被自动转换为<代码> int <代码>的字符。例如,由于

'0'
代码不是0,所以没有显示任何内容。将所有
if
更改为字符对字符比较:

if (txtNumber.Text[i] == '0')
var numToText = new Dictionary<int, string>() { {'0', "Zero "}, ...};
foreach (var char in txtMessage.Text)
{
    display += numToText[char];
}

也可以考虑使用<代码>开关< /C>结构> ./P> <代码> var NotoTeX=新字典(){{0',“0”},…};

var numToText = new Dictionary<int, string>() { {'0', "Zero "}, ...};
foreach (var char in txtMessage.Text)
{
    display += numToText[char];
}
foreach(txtMessage.Text中的var char) { display+=numToText[char]; }
这可能也是一个linq单行程序

var numToText=new Dictionary(){{'0',“Zero”},…};
foreach(txtMessage.Text中的var char)
{
display+=numToText[char];
}
这可能也是一个linq单行程序

var numToText=new Dictionary(){{'0',“Zero”},…};
foreach(txtMessage.Text中的var char)
{
display+=numToText[char];
}
这可能也是一个linq单行程序

var numToText=new Dictionary(){{'0',“Zero”},…};
foreach(txtMessage.Text中的var char)
{
display+=numToText[char];
}

这很可能也是一个linq单行程序。文本属性的类型为字符串。索引到string类型的项中会返回char类型的值。您的代码正在以现在编写的方式执行错误的隐含强制转换。例如,将0字符转换为整数将产生48,将0整数转换为字符将产生ASCII NUL。尝试单引号将数字转换为字符文字(即
'0'
)或解析索引项(即
int.Parse(txtNumber.Text[i])
),以避免产生意外结果的隐含强制转换。

文本属性为字符串类型。索引到string类型的项中会返回char类型的值。您的代码正在以现在编写的方式执行错误的隐含强制转换。例如,将0字符转换为整数将产生48,将0整数转换为字符将产生ASCII NUL。尝试单引号将数字转换为字符文字(即
'0'
)或解析索引项(即
int.Parse(txtNumber.Text[i])
),以避免产生意外结果的隐含强制转换。

文本属性为字符串类型。索引到string类型的项中会返回char类型的值。您的代码正在以现在编写的方式执行错误的隐含强制转换。例如,将0字符转换为整数将产生48,将0整数转换为字符将产生ASCII NUL。尝试单引号将数字转换为字符文字(即
'0'
)或解析索引项(即
int.Parse(txtNumber.Text[i])
),以避免产生意外结果的隐含强制转换。

文本属性为字符串类型。索引到string类型的项中会返回char类型的值。您的代码正在以现在编写的方式执行错误的隐含强制转换。例如,将0字符转换为整数将产生48,将0整数转换为字符将产生ASCII NUL。尝试单引号将数字转换为字符文字(即
'0'
)或解析索引项(即
int.Parse(txtNumber.Text[i])
),以避免产生意外结果的隐含强制转换。

您正在将
char
txtNumber.Text[i]中的
int
进行比较==0
行,例如

因为我是一名工程师,所以我用基于like的


对于
301
作为输入,输出将是
Three Zero One

例如,您将
char
txtNumber.Text[i]==0
行中的
int
进行比较

因为我是一名工程师,所以我用基于like的

对于
301
作为输入,输出将为
三零一