C# 数字翻译器最多9999999个字

C# 数字翻译器最多9999999个字,c#,numbers,C#,Numbers,我正在尝试制作一个数字翻译器,该翻译器可以处理到 并将其转换为字符串表示形式 输入=9999999 产量=玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖 如果您能提供更好的解决方法,我们将不胜感激 充分披露我使用了很多想法 从这个以前的解决方案 我找出了哪里出了问题,把一些if语句放在了需要的地方,现在它在很大程度上起作用了 public partial class MainWindow : Window { int inputNumber; public MainWindo

我正在尝试制作一个数字翻译器,该翻译器可以处理到
并将其转换为字符串表示形式

输入=9999999 产量=玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖

如果您能提供更好的解决方法,我们将不胜感激

充分披露我使用了很多想法 从这个以前的解决方案


我找出了哪里出了问题,把一些if语句放在了需要的地方,现在它在很大程度上起作用了

    public partial class MainWindow : Window
{

   int inputNumber;



    public MainWindow()
    {
        InitializeComponent();
    }

    private void Translate_Click(object sender, RoutedEventArgs e)
    {

        if (int.TryParse(txtInput.Text, out inputNumber) )
        {
            TranslateNumber();
        }

    }

    private void TranslateNumber()
    {

        var unitsMap = new[] { " ", " One ", " Two ", " Three ", " Four ", " Five ", " Six ", " Seven ", " Eight ", " Nine ", " Ten ", " Eleven ", " Twelve ", " Thirteen ", " Fourteen ", " Fifteen ", " Sixteen ", " Seventeen ", " Eighteen ", " Nineteen " };
        var tensMap = new[] { " ", " Ten ", " Twenty ", " Thirty ", " Forty ", " Fifty ", " Sixty ", " Seventy ", " Eighty ", " Ninety " };


        if (inputNumber == 0)
        {
            tBlkOutput.Text += "zero";
        }






        if ((inputNumber / 1000000) > 0 )
        {
            if ((inputNumber / 100000000) > 0)
            {
                // needs a number betwwen 1 and 9
                tBlkOutput.Text += unitsMap[inputNumber / 100000000] + " Hundred and ";
                inputNumber %= 100000000;
            }

            // need to be able to list between 1 million and 99 million
            if ((inputNumber / 10000000) > 0)
            {
                tBlkOutput.Text += tensMap[inputNumber / 10000000];
                inputNumber %= 10000000;
            }
            if ((inputNumber / 1000000) > 0)
            {
                tBlkOutput.Text += unitsMap[inputNumber / 1000000];
                inputNumber %= 1000000;
            }

            tBlkOutput.Text += " Million ";
        }


        if ((inputNumber / 1000) > 0)
        {
            if ((inputNumber / 100000) > 0)
            {
                // needs a number betwwen 1 and 9
                tBlkOutput.Text += unitsMap[inputNumber / 100000] + " Hundred and  ";
                inputNumber %= 100000;
            }

            if ((inputNumber / 10000) > 0)
            {
                tBlkOutput.Text += tensMap[inputNumber / 10000];
                inputNumber %= 10000;
            }
            if ((inputNumber / 1000) > 0)
            {
                tBlkOutput.Text += unitsMap[inputNumber / 1000];
                inputNumber %= 1000;
            }
            tBlkOutput.Text += " Thousand ";
        }

        if ((inputNumber / 100) > 0)
        {
            tBlkOutput.Text += unitsMap[inputNumber / 100] + " Hundred and ";
            inputNumber %= 100;
        }
        if ((inputNumber / 10 ) > 0)
        {
            tBlkOutput.Text += tensMap[inputNumber / 10];
            inputNumber %= 10;
        }
        if (inputNumber > 0)
        {
            tBlkOutput.Text += unitsMap[inputNumber];
        }



    }

    private void Reset_Click(object sender, RoutedEventArgs e)
    {
        tBlkOutput.Text = "";
        inputNumber = 0;
        txtInput.Text = "";
        txtInput.Focus();
    }
}
    public partial class MainWindow : Window
{

   int inputNumber;



    public MainWindow()
    {
        InitializeComponent();
    }

    private void Translate_Click(object sender, RoutedEventArgs e)
    {

        if (int.TryParse(txtInput.Text, out inputNumber) )
        {
            TranslateNumber();
        }

    }

    private void TranslateNumber()
    {

        var unitsMap = new[] { " ", " One ", " Two ", " Three ", " Four ", " Five ", " Six ", " Seven ", " Eight ", " Nine ", " Ten ", " Eleven ", " Twelve ", " Thirteen ", " Fourteen ", " Fifteen ", " Sixteen ", " Seventeen ", " Eighteen ", " Nineteen " };
        var tensMap = new[] { " ", " Ten ", " Twenty ", " Thirty ", " Forty ", " Fifty ", " Sixty ", " Seventy ", " Eighty ", " Ninety " };


        if (inputNumber == 0)
        {
            tBlkOutput.Text += "zero";
        }






        if ((inputNumber / 1000000) > 0 )
        {
            if ((inputNumber / 100000000) > 0)
            {
                // needs a number betwwen 1 and 9
                tBlkOutput.Text += unitsMap[inputNumber / 100000000] + " Hundred and ";
                inputNumber %= 100000000;
            }

            // need to be able to list between 1 million and 99 million
            if ((inputNumber / 10000000) > 0)
            {
                tBlkOutput.Text += tensMap[inputNumber / 10000000];
                inputNumber %= 10000000;
            }
            if ((inputNumber / 1000000) > 0)
            {
                tBlkOutput.Text += unitsMap[inputNumber / 1000000];
                inputNumber %= 1000000;
            }

            tBlkOutput.Text += " Million ";
        }


        if ((inputNumber / 1000) > 0)
        {
            if ((inputNumber / 100000) > 0)
            {
                // needs a number betwwen 1 and 9
                tBlkOutput.Text += unitsMap[inputNumber / 100000] + " Hundred and  ";
                inputNumber %= 100000;
            }

            if ((inputNumber / 10000) > 0)
            {
                tBlkOutput.Text += tensMap[inputNumber / 10000];
                inputNumber %= 10000;
            }
            if ((inputNumber / 1000) > 0)
            {
                tBlkOutput.Text += unitsMap[inputNumber / 1000];
                inputNumber %= 1000;
            }
            tBlkOutput.Text += " Thousand ";
        }

        if ((inputNumber / 100) > 0)
        {
            tBlkOutput.Text += unitsMap[inputNumber / 100] + " Hundred and ";
            inputNumber %= 100;
        }
        if ((inputNumber / 10 ) > 0)
        {
            tBlkOutput.Text += tensMap[inputNumber / 10];
            inputNumber %= 10;
        }
        if (inputNumber > 0)
        {
            tBlkOutput.Text += unitsMap[inputNumber];
        }



    }

    private void Reset_Click(object sender, RoutedEventArgs e)
    {
        tBlkOutput.Text = "";
        inputNumber = 0;
        txtInput.Text = "";
        txtInput.Focus();
    }
}