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();
}
}