그래서 수백 개까지만 변환하는이 코드를 수정 해 보았습니다.
https://github.com/ivanpop/CS-for-Dummies/blob/master/Chapter%205%20Solution%2011/Program.cs
이에
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();
}
}
하지만 1100을 입력하려고하면 1 천 1 백 대신 1 천 2 백이 출력됩니다.
중첩 된 switch 문을 사용해야하므로 메서드 나 배열을 사용할 수 없습니다.
아니요, 999보다 큰 숫자는 수백을 계산하는 방법을 수정해야합니다.
byte hundreds = (byte)((number - (1000 * thousandths)) / 100 | 0);
hundreds
입력이 "1100"이면 1로 설정 됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다