2014-10-28 33 views
3

這是我的完整程序。很顯然,我是一名初學者。我面對的問題是,如果年齡小於零,那麼它會返回幾行,但是它也會再次詢問用戶。 :(我能做些什麼來解決這個問題?C#標籤和轉到

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

哦,請不要使用'goto'聲明 – 2014-10-28 08:52:32

+1

你的新的,但你想失去你的魅力'儘快goto' :) – Tim 2014-10-28 08:52:50

+1

的goto是壞的,你應該感覺不好。 – NaeiKinDus 2014-10-28 08:52:55

回答

0

您可以在引腳設置爲-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; 
} 

使用方法是在這種情況下:)

+0

如何在不轉到的情況下使用它? – 2014-10-28 08:53:32

+0

像上面那樣...調用方法。你可能想要檢查年齡低於110我也假設。 – Noctis 2014-10-28 08:56:42

+0

但是我有一位115歲的老太太從我這裏走過! – 2014-10-28 08:58:22

3

所以,如果我理解正確,您想提示的年齡,如果是小於0或超過110比較合適?

首先,不要去標籤,他們是醜陋的,你不想使用它們,而是你可以使用do while循環,但也有很多的可能性:

而且,代替使用\n語法,你也可以使用Console.WriteLine

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(); 
+0

我也想給用戶顯示錯誤信息!如果他沒有輸入有效年齡,年齡應該在0到110之間。 – 2014-10-28 08:56:27

+0

我已更新代碼以顯示錯誤消息。 – Complexity 2014-10-28 08:57:46

0

轉到標籤是從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()); 
} 
1

u可以使用函數的概念在這裏實現相同的,由後藤的@noctis ..use應避免U爲單位標示應該使用功能

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

。其創造的問題... 也請檢查 - negetivenumber例外的概念...你可以使用你自己的例外

-1

只是在引腳提示之前移動你的條件。

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