问题指出“编写一个程序,接受一个可能包含一个或多个字母字符的 10 位电话号码。使用数字显示相应的号码......等”ABC:2 到 WXYZ:9
这一章讲的是循环,但我发现自己真的迷失在这个问题上。我完成了代码,但我认为它很糟糕......
我的问题:有没有更好的方法来缩短这段代码?而且我只想使用 c# 关键字大小写,还有其他方法吗?
编辑:阿拉伯语,你可以输入 1800WALLTO ,它会给你 1800925586
另外,我不是要一个不起作用的代码,这正是我想要的,并要求它做。我只是要求任何关于如何使它变得更好的建议或意见。我真的很想知道一种方法来做到这一点,而不用 switch 和 case break 等......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int x = 0;
char userInput = ' ';
string inputString = "",
outputString = "";
Console.WriteLine("Enter the digits from the phone number");
do
{
userInput = Console.ReadKey(false).KeyChar;
inputString += userInput;
if (Char.IsLetter(userInput))
userInput = userInput.ToString().ToUpper().ToCharArray()[0];
switch (userInput)
{
case '1':
outputString += '1';
x++;
break;
case '2':
case 'A':
case 'B':
case 'C':
outputString += '2';
x++;
break;
case '3':
case 'D':
case 'E':
case 'F':
outputString += '3';
x++;
break;
case '4':
case 'G':
case 'H':
case 'I':
outputString += '4';
x++;
break;
case '5':
case 'J':
case 'K':
case 'L':
outputString += '5';
x++;
break;
case '6':
case 'M':
case 'N':
case 'O':
outputString += '6';
x++;
break;
case '7':
case 'P':
case 'Q':
case 'R':
case 'S':
outputString += '7';
x++;
break;
case '8':
case 'T':
case 'U':
case 'V':
outputString += '8';
x++;
break;
case '9':
case 'W':
case 'X':
case 'Y':
case 'Z':
outputString += '9';
x++;
break;
case '0':
outputString += '0';
x++;
break;
default:
Console.WriteLine("You entered an incorrect value-Try again");
x--;
break;
}
}
while (x < 10);
Console.WriteLine("\nYou entered {0}", inputString);
Console.WriteLine("Your number is {0}", outputString);
}
}
}