C# 如何使用嵌套的switch语句将数字转换为0-9999之间的单词

C# 如何使用嵌套的switch语句将数字转换为0-9999之间的单词,c#,C#,所以我尝试修改这段代码,它最多只能转换数百次 对此 class Program { static void Main(string[] args) { Console.Write("Enter a number between 0 and 9999: "); short number = Convert.ToInt16(Console.ReadLine()); byte thousandths = (byte

所以我尝试修改这段代码,它最多只能转换数百次

对此

class Program
{
    static void Main(string[] args)
    {
        Console.Write("Enter a number between 0 and 9999: ");
        short number = Convert.ToInt16(Console.ReadLine());

        byte thousandths = (byte)(number / 1000 | 0);
        byte hundreds = (byte)(number / 100 | 0);
        byte tensAndOnes;

        if (number > 99)
        {
            tensAndOnes = (byte)(number % 100);
        }
        else tensAndOnes = (byte)(number * 1);

        byte ones = (byte)(number % 10);

        switch (thousandths)
        {
            case 1: Console.Write("One thousand "); break;
            case 2: Console.Write("Two thousand "); break;
            case 3: Console.Write("Three thousand "); break;
            case 4: Console.Write("Four thousand "); break;
            case 5: Console.Write("Five thousand "); break;
            case 6: Console.Write("Six thousand "); break;
            case 7: Console.Write("Seven thousand "); break;
            case 8: Console.Write("Eight thousand "); break;
            case 9: Console.Write("Nine thousand "); break;
        }

        
        if (thousandths >= 1 && hundreds >= 1) Console.Write(" and ");

        if (hundreds >= 1 && hundreds < 10) Console.Write("One hundred");
        else if (hundreds >= 10 && hundreds < 20) Console.Write("Two hundred");
        else if (hundreds >= 20 && hundreds < 30) Console.Write("Three hundred");
        else if (hundreds >= 30 && hundreds < 40) Console.Write("Four hundred");
        else if (hundreds >= 40 && hundreds < 50) Console.Write("Five hundred");
        else if (hundreds >= 50 && hundreds < 60) Console.Write("Six hundred");
        else if (hundreds >= 60 && hundreds < 70) Console.Write("Seven hundred");
        else if (hundreds >= 70 && hundreds < 80) Console.Write("Eight hundred");
        else if (hundreds >= 80 && hundreds < 90) Console.Write("Nine hundred");
        switch (hundreds)
        {
            case 1: Console.Write("One hundred "); break;
            case 2: Console.Write("Two hundred "); break;
            case 3: Console.Write("Three hundred "); break;
            case 4: Console.Write("Four hundred "); break;
            case 5: Console.Write("Five hundred "); break;
            case 6: Console.Write("Six hundred "); break;
            case 7: Console.Write("Seven hundred "); break;
            case 8: Console.Write("Eight hundred "); break;
            case 9: Console.Write("Nine hundred "); break;
        }

        if (hundreds >= 1 && tensAndOnes >= 1) Console.Write(" ");

        if (tensAndOnes >= 20 && tensAndOnes < 30) Console.Write("Twenty");
        else if (tensAndOnes >= 30 && tensAndOnes < 40) Console.Write("Thirty");
        else if (tensAndOnes >= 40 && tensAndOnes < 50) Console.Write("Fourty");
        else if (tensAndOnes >= 50 && tensAndOnes < 60) Console.Write("Fifty");
        else if (tensAndOnes >= 60 && tensAndOnes < 70) Console.Write("Sixty");
        else if (tensAndOnes >= 70 && tensAndOnes < 80) Console.Write("Seventy");
        else if (tensAndOnes >= 80 && tensAndOnes < 90) Console.Write("Eighty");
        else if (tensAndOnes >= 90 && tensAndOnes < 100) Console.Write("Ninety");

        switch (tensAndOnes)
        {
            case 1: Console.Write("One"); break;
            case 2: Console.Write("Two"); break;
            case 3: Console.Write("Three"); break;
            case 4: Console.Write("Four"); break;
            case 5: Console.Write("Five"); break;
            case 6: Console.Write("Six"); break;
            case 7: Console.Write("Seven"); break;
            case 8: Console.Write("Eight"); break;
            case 9: Console.Write("Nine"); break;
            case 10: Console.Write("Ten"); break;
            case 11: Console.Write("Eleven"); break;
            case 12: Console.Write("Twelve"); break;
            case 13: Console.Write("Thirteen"); break;
            case 14: Console.Write("Fourteen"); break;
            case 15: Console.Write("Fifteen"); break;
            case 16: Console.Write("Sixteen"); break;
            case 17: Console.Write("Seventeen"); break;
            case 18: Console.Write("Eighteen"); break;
            case 19: Console.Write("Nineteen"); break;
        }
        if (tensAndOnes > 20)
        {
            switch (ones)
            {
                case 1: Console.Write("-one"); break;
                case 2: Console.Write("-two"); break;
                case 3: Console.Write("-three"); break;
                case 4: Console.Write("-four"); break;
                case 5: Console.Write("-five"); break;
                case 6: Console.Write("-six"); break;
                case 7: Console.Write("-seven"); break;
                case 8: Console.Write("-eight"); break;
                case 9: Console.Write("-nine"); break;
            }
        }
       if (number == 0) Console.Write("Zero");
        Console.ReadKey();
    }
}
类程序
{
静态void Main(字符串[]参数)
{
编写(“输入一个介于0和9999之间的数字:”);
short number=Convert.ToInt16(Console.ReadLine());
字节千分之=(字节)(数字/1000 | 0);
字节百=(字节)(数字/100 | 0);
字节张量和;
如果(数量>99)
{
tensAndOnes=(字节)(数字%100);
}
else-tensAndOnes=(字节)(数字*1);
字节一=(字节)(数字%10);
开关(千分之一)
{
案例1:控制台。写入(“一千”);中断;
案例2:控制台。写(“两千”);中断;
案例3:控制台。写(“三千”);中断;
案例4:控制台。写(“四千”);中断;
案例5:控制台。写(“五千”);中断;
案例6:控制台。写(“六千”);中断;
案例7:控制台。写(“七千”);中断;
案例8:控制台。写(“八千”);中断;
案例9:控制台。写(“九千”);中断;
}
如果(千分之一>=1&百分之一百>=1)控制台写入(“和”);
如果(百分位>=1&&百分位<10)控制台写入(“百分位”);
如果(百分之十>=10&&百分之二十)控制台写入(“二百”);
否则,如果(百分之二十&&百分之三十)控制台。写入(“三百”);
否则,如果(百分之三十&&百分之四十)控制台。写入(“四百”);
否则,如果(百分之四十&&百分之五十)控制台。写入(“五百”);
如果(百分位>=50和百分位<60)控制台写入(“六百”);
否则,如果(百分之六十&&百分之七十)控制台。写入(“七百”);
如果(百位>=70&&百位<80)控制台写入(“八百位”);
如果(百位>=80&&百位<90)控制台,则写入(“九百”);
交换机(数百)
{
案例1:控制台。写入(“一百”);中断;
案例2:控制台。写入(“二百”);中断;
案例3:控制台。写(“三百”);中断;
案例4:控制台。写入(“四百”);中断;
案例5:控制台。写(“五百”);中断;
案例6:控制台。写(“六百”);中断;
案例7:控制台。写(“七百”);中断;
案例8:控制台。写(“八百”);中断;
案例9:控制台。写(“九百”);中断;
}
如果(数百个>=1&&tensAndOnes>=1)控制台。写入(“”);
如果(tensAndOnes>=20&&tensAndOnes<30)控制台写入(“二十”);
如果(tensAndOnes>=30&&tensAndOnes<40)控制台写入(“三十”);
否则,如果(tensAndOnes>=40&&tensAndOnes<50)控制台写入(“四十”);
如果(tensAndOnes>=50&&tensAndOnes<60)控制台,则写入(“五十”);
否则,如果(tensAndOnes>=60&&tensAndOnes<70)控制台。写入(“六十”);
如果(tensAndOnes>=70&&tensAndOnes<80)控制台,则写入(“70”);
否则,如果(tensAndOnes>=80&&tensAndOnes<90)控制台写入(“八十”);
如果(tensAndOnes>=90&&tensAndOnes<100)控制台写入(“90”);
开关(tensAndOnes)
{
案例1:控制台。写入(“一”);中断;
案例2:控制台。写入(“两”);中断;
案例3:控制台。写入(“三”);中断;
案例4:控制台。写入(“四”);中断;
案例5:控制台。写入(“五”);中断;
案例6:控制台。写入(“六”);中断;
案例7:控制台。写入(“七”);中断;
案例8:控制台。写入(“八”);中断;
案例9:控制台。写入(“九”);中断;
案例10:控制台。写入(“十”);中断;
案例11:Console.Write(“十一”);break;
案例12:控制台。写(“十二”);中断;
案例13:控制台。写入(“十三”);中断;
案例14:控制台。写入(“十四”);中断;
案例15:控制台。写入(“十五”);中断;
案例16:控制台。写入(“十六”);中断;
案例17:控制台。写(“十七”);中断;
案例18:控制台。写(“十八”);中断;
案例19:控制台。写入(“十九”);中断;
}
如果(tensAndOnes>20)
{
交换机(个)
{
案例1:控制台。写入(“-1”);中断;
案例2:Console.Write(“-2”);break;
案例3:控制台。写入(“-3”);中断;
案例4:控制台。写入(“-4”);中断;
案例5:控制台。写(“-5”);中断;
案例6:控制台。写(“-6”);中断;
案例7:Console.Write(“-seven”);break;
案例8:Console.Write(“-8”);break;
案例9:Console.Write(“-9”);break;
}
}
如果(number==0)控制台写入(“零”);
Console.ReadKey();
}
}
但当我尝试输入1100时,它输出的是1200而不是1100


我必须使用嵌套的switch语句,因此不允许使用方法或数组

既然您的数字大于999,则需要修改计算百分位数的方式:

byte hundreds = (byte)((number - (1000 * thousandths)) / 100 | 0);

当输入为“1100”时,这将把
数百
设置为1。

不要编辑堆栈溢出问题标题以添加“已解决”之类的词。这是不必要的,也不符合社区准则。