switch语句
嗨,我正在练习程序中的“开关循环”。我正在创建一个代码,用户可以输入整数,在用户输入整数后,它也会显示用户输入的内容。现在我试图在程序要求用户输入通过选择Y/N再次输入号码。我已经将它包含在我的代码中,但如果我在程序第一次输入字符时键入一个整数,程序将执行catch部分。我怎样才能让它,如果用户将键入一个字符,它也将显示消息,“请输入整数:”switch语句
感谢您的帮助我很迷茫在这里的某个地方。
int enterYourNumber;
char shortLetter;
try
{
Console.WriteLine("Please enter the integer: ");
enterYourNumber = Convert.ToInt32(Console.ReadLine());
WriteNumber(enterYourNumber);
Console.WriteLine("Do you still want to enter a number? Y/N");
shortLetter = Convert.ToChar(Console.ReadLine());
while (shortLetter == 'y' || shortLetter == 'Y')
{
Console.WriteLine("Please enter the integer: ");
enterYourNumber = Convert.ToInt32(Console.ReadLine());
WriteNumber(enterYourNumber);
Console.WriteLine("Do you still want to enter a number? Y/N");
shortLetter = Convert.ToChar(Console.ReadLine());
}
}
catch
{
Console.WriteLine("Please enter an integer not a character");
}
}
public static void WriteNumber(int wordValue)
{
switch (wordValue)
{
case 1:
Console.WriteLine("You have entered number one");
break;
case 2:
Console.WriteLine("You have entered number two");
break;
case 3:
Console.WriteLine("You have entered number three");
break;
default:
Console.WriteLine("You have exceeded the range of number 1-3 ");
break;
}
======================
这是我做的,我不知道为什么我得到一个错误。新的方法似乎不起作用:
int enterYourNumber;
char shortLetter;
do
{
enterYourNumber = GetNumber();
WriteNumber(enterYourNumber);
Console.WriteLine("Do you still want to enter a number? Y/N");
shortLetter = Convert.ToChar(Console.ReadLine());
}
while (shortLetter == 'y' || shortLetter == 'Y')
{
Console.WriteLine("Please enter the integer: ");
enterYourNumber = Convert.ToInt32(Console.ReadLine());
WriteNumber(enterYourNumber);
Console.WriteLine("Do you still want to enter a number? Y/N");
shortLetter = Convert.ToChar(Console.ReadLine());
}
}
public static int GetNumber()
{
bool done = false;
int value;
while (!done)
{
Console.WriteLine("Please enter the integer: ");
try
{
value = Convert.ToInt32(Console.ReadLine());
done = true;
}
catch
{
Console.WriteLine("Please enter an integer not a character");
}
}
}
=============
你好比尔,这是你给的例子,似乎我仍然得到一个错误:你可以请代码。再次
public static void Main(string[] args)
{
int enterYourNumber;
char shortLetter;
do
{
enteryourNumber = GetNumber();
WriteNumber(enteryourNumber);
Console.WriteLine("Do you still want to enter a number? Y/N");
shortLetter = Convert.ToChar(Console.ReadLine());
}
while (shortLetter == 'y' || shortLetter == 'Y');
}
public static int GetNumber()
{
bool done = false;
int value;
while (!done)
{
Console.WriteLine("Please enter the integer: ");
try
{
value = Convert.ToInt32(Console.ReadLine());
done = true;
}
catch
{
Console.WriteLine("Please enter an integer not a character");
}
Console.WriteLine("Please enter the integer: ");
enterYourNumber = Convert.ToInt32(Console.ReadLine());
WriteNumber(enterYourNumber);
Console.WriteLine("Do you still want to enter a number? Y/N");
shortLetter = Convert.ToChar(Console.ReadLine());
}
}
public static void WriteNumber(int wordValue)
{
switch (wordValue)
{
case 1:
Console.WriteLine("You have entered number one");
break;
case 2:
Console.WriteLine("You have entered number two");
break;
case 3:
Console.WriteLine("You have entered number three");
break;
default:
Console.WriteLine("You have exceeded the range of number 1-3 ");
break;
}
}
}
}
=================
你好这个问题是罗伯特:非常感谢你。这就是我现在所做的,但是如果我输入“N”,它不会退出程序。它仍然问了同样的问题。任何想法:感谢:
public static void Main(string[] args)
{
int enterYourNumber;
char shortLetter;
bool validEntry;
while (true)
{
do
{
Console.WriteLine("Please enter an integer: ");
string numberString = Console.ReadLine();
validEntry = int.TryParse(numberString, out enterYourNumber);
WriteNumber(enterYourNumber);
if (!validEntry)
{
Console.WriteLine("Entry must be an integer");
}
} while (!validEntry);
Console.WriteLine("Do you still want to enter a number? Y/N");
shortLetter = Convert.ToChar(Console.ReadLine());
}
}
public static void WriteNumber(int wordValue)
{
switch (wordValue)
{
case 1:
Console.WriteLine("You have entered number one");
break;
case 2:
Console.WriteLine("You have entered numbered two");
break;
case 3:
Console.WriteLine("You have entered numbered three");
break;
default:
Console.WriteLine("You have exceeded the range of number 1-3");
break;
}
}
}
}
================================= ===
嗨罗伯特和比尔这里是我现在得到的。希望你能提出一些关于如何改进编码的想法。谢谢你的帮助。
public static void Main(string[] args)
{
int intEnterYourNumber;
char charShortLetter;
string strUserInput;
do
{
do
{
Console.WriteLine("Please enter the integer: ");
strUserInput = Console.ReadLine();
} while (!int.TryParse(strUserInput, out intEnterYourNumber));
WriteNumber(intEnterYourNumber);
Console.WriteLine("Do you still want to enter a number? Y/N");
charShortLetter = Convert.ToChar(Console.ReadLine().ToUpper());
} while (charShortLetter == 'Y');
}
public static void WriteNumber(int wordValue)
{
switch (wordValue)
{
case 1:
Console.WriteLine("You have entered number one");
break;
case 2:
Console.WriteLine("You have entered numbered two");
break;
case 3:
Console.WriteLine("You have entered numbered three");
break;
default:
Console.WriteLine("You have exceeded the range of number 1-3");
break;
}
}
移动循环内的try/catch块。 Robert Harvey对do/while循环的建议也很好。
int enterYourNumber;
char shortLetter;
do
{
try
{
Console.WriteLine("Please enter the integer: ");
enterYourNumber = Convert.ToInt32(Console.ReadLine());
WriteNumber(enterYourNumber);
}
catch(FormatException)
{
Console.WriteLine("Please enter an integer not a character");
}
shortLetter = '\0';
do
{
try
{
Console.WriteLine("Do you still want to enter a number? Y/N");
shortLetter = Convert.ToChar(Console.ReadLine());
}
catch(FormatException)
{
Console.WriteLine("Please enter a single character");
}
}
while (shortLetter == '\0')
}
while (shortLetter == 'y' || shortLetter == 'Y')
}
public static void WriteNumber(int wordValue)
{
switch (wordValue)
{
case 1:
Console.WriteLine("You have entered number one");
break;
case 2:
Console.WriteLine("You have entered number two");
break;
case 3:
Console.WriteLine("You have entered number three");
break;
default:
Console.WriteLine("You have exceeded the range of number 1-3 ");
break;
}
do
{
Console.WriteLine("Please enter the integer: ");
enterYourNumber = Convert.ToInt32(Console.ReadLine());
WriteNumber(enterYourNumber);
Console.WriteLine("Do you still want to enter a number? Y/N");
shortLetter = Convert.ToChar(Console.ReadLine());
}
while (shortLetter == 'y' || shortLetter == 'Y')
罗伯特是一个开始,但也许我们还是想尝试捕捉...
替换为您的主要功能:
do
{
enterYourNumber = GetNumber();
WriteNumber(enterYourNumber);
Console.WriteLine("Do you still want to enter a number? Y/N");
shortLetter = Convert.ToChar(Console.ReadLine());
}
while (shortLetter == 'y' || shortLetter == 'Y')
,并添加此功能:
public static int GetNumber() {
boolean done = false;
int value;
while (!done) {
Console.WriteLine("Please enter the integer: ");
try {
value = Convert.ToInt32(Console.ReadLine());
done = true;
}
catch {
Console.WriteLine("Please enter an integer not a character");
}
}
}
然后删除您的try catch主要功能。
嗨比尔请看我编辑的答案,看来新方法在这里有问题 – tintincutes 2009-06-14 01:33:36
我觉得你的代码会更容易学习和理解,如果你没有使用异常来测试你的号码。尝试使用int.TryParse()代替(MSDN上的TryParse())。的TryParse()取决于输入的号码是否有效返回真(或假):
int number;
bool validEntry = int.TryParse(enterYourNumber, out number);
if (!validEntry)
{
Console.WriteLine("Entry must be an integer.");
}
此外,了解do ... while循环(link)。 do..while循环类似于常规的while循环,除了在计算条件表达式之前执行do-while循环一次。
bool validEntry;
int enteredNumber;
do
{
Console.Write("Please enter the integer: ");
string numberString = Console.ReadLine();
validEntry = int.TryParse(numberString, out enteredNumber);
if (!validEntry)
{
Console.WriteLine("Entry must be an integer.");
}
} while (!validEntry);
裹在另一个while循环,整个事情(“你还是要输入数字(Y/N)?”),你就大功告成了。
享受,
罗伯特C. Cartaino
感谢罗伯特怎么样,如果用户将输入的第一次一个角色? – tintincutes 2009-06-14 01:16:14
把这个做/做在你的try/catch中,就像在原始代码中一样。 – 2009-06-14 01:24:15
不幸的是,它并没有让用户在发生异常后回到循环中,这是一个问题。 – billjamesdev 2009-06-14 02:16:00