[英]C# label and goto
這是我的完整計划。 顯然我是初學者。 我面臨的問題是,如果年齡小於零,那么它會回到幾行,但它也會再次詢問用戶針腳。 :(我該怎么辦才能解決這個問題?
using System;
namespace Examples
{
class Program
{
static void Main(string[] args)
{
string name;
string city;
int age;
int pin;
// \n is used for line-break
Console.Write("Enter your name : ");
name = Console.ReadLine();
Console.Write("\nEnter Your City : ");
city = Console.ReadLine();
age:
Console.Write("\nEnter your age : ");
age = Int32.Parse(Console.ReadLine());
Console.Write("\nEnter your pin : ");
pin = Int32.Parse(Console.ReadLine());
if (age < 0 || age >= 110)
{
goto age;
}
// Printing message to console
//formatting output
Console.WriteLine("==============");
Console.WriteLine("Your Complete Address:");
Console.WriteLine("============\n");
Console.WriteLine("Name = {0}", name);
Console.WriteLine("City = {0}", city);
Console.WriteLine("Age = {0}", age);
Console.WriteLine("Pin = {0}", pin);
Console.WriteLine("===============");
Console.ReadLine();
}
}
}
所以,如果我正確理解這一點,你想提示年齡是否小於0或大於110?
首先,不要使用標簽,它們很丑,你不想使用它們,而是你可以使用do while循環,但有很多可能性:
此外,您還可以使用Console.WriteLine
,而不是使用\\n
語法
string name;
string city;
int age;
int pin;
// \n is used for line-break
Console.Write("Enter your name : ");
name = Console.ReadLine();
Console.Write("\nEnter Your City : ");
city = Console.ReadLine();
age = -1;
while (age < 0 || age >= 110)
{
Console.Write("\nEnter your age : ");
age = Int32.Parse(Console.ReadLine());
if (age < 0 || age >= 110)
{
Console.WriteLine("The age must be between 0 and 110.");
}
}
Console.Write("\nEnter your pin : ");
pin = Int32.Parse(Console.ReadLine());
// Printing message to console
//formatting output
Console.WriteLine("==============");
Console.WriteLine("Your Complete Address:");
Console.WriteLine("============\n");
Console.WriteLine("Name = {0}", name);
Console.WriteLine("City = {0}", city);
Console.WriteLine("Age = {0}", age);
Console.WriteLine("Pin = {0}", pin);
Console.WriteLine("===============");
Console.ReadLine();
你可以在這里使用函數概念,你應該使用函數
Console.Write("\nEnter your age : ");
age = Int32.Parse(Console.ReadLine());
if (age < 0 || age >= 110)
{
//show error msg
}
Console.Write("\nEnter your pin : ");
pin = Int32.Parse(Console.ReadLine());
//if every data is corrent - run function
showinfo();
////////////
showinfo()
{
Console.WriteLine("==============");
Console.WriteLine("Your Complete Address:");
Console.WriteLine("============\n");
Console.WriteLine("Name = {0}", name);
Console.WriteLine("City = {0}", city);
Console.WriteLine("Age = {0}", age);
Console.WriteLine("Pin = {0}", pin);
Console.WriteLine("===============");
Console.ReadLine();}
正如@noctis所述..應該避免使用goto ..它會產生問題......還請檢查 - negetivenumber異常概念......你也可以使用你自己的例外
您可以將引腳設置為-1,然后檢查它。
另外,你可能會因為GOTO聲明而陷入宗教戰爭...... :)通常它不贊成,在這里肯定可以避免,但有些人會說它沒問題。 真的,由你決定。
我將一些代碼放在一起並粘貼它。
void Main()
{
string name;
string city;
int age;
int pin;
// \n is used for line-break
Console.Write("Enter your name : ");
name = Console.ReadLine();
Console.Write("\nEnter Your City : ");
city = Console.ReadLine();
age = GetAge();
//... eluded
Console.ReadLine();
}
// Define other methods and classes here
private int GetAge() {
Console.Write("\nEnter your age : ");
int age = -1;
while (age <0 || age>110) {
age = Int32.Parse(Console.ReadLine());
}
return age;
}
在這種情況下使用方法會更合適:)
Goto Label從C的一開始就是一個相當古老的遺留物,你應該避免它。 您可以通過實現循環來實現相同的目的
Console.WriteLine("Enter your pin : ");
pin = Int32.Parse(Console.ReadLine());
while (age < 0 || age >= 110)
{
Console.WriteLine("Enter your age : ");
int age = Int32.Parse(Console.ReadLine());
}
只需在引腳提示之前移動您的條件。
age:
Console.Write("\nEnter your age : ");
age = Int32.Parse(Console.ReadLine());
if (age < 0 || age >= 110)
{
goto age;
}
Console.Write("\nEnter your pin : ");
pin = Int32.Parse(Console.ReadLine());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.