2014-02-25 122 views
0

我正在嘗試使此循環工作,因此它將繼續詢問數字,直到用戶輸入999.但是,使用此版本的代碼,沒有建立說我不能在循環中聲明num,因爲我在這個範圍內賦予它不同的含義。在'while循環'中聲明變量,但在循環期間不能更改值

使用try和catch是因爲我的這段代碼的分配規則。

int num; 
while (num != 999) 
{ 
    Console.WriteLine("Enter a number between 0 and 99"); 
    string input = Console.ReadLine(); 
    try 
    { 
     int num = Convert.ToInt32(input); 
     Console.WriteLine("This is element number " + num + " : " + randNums[num]); 
    } 
    catch 
    { 
     Console.WriteLine("Data inputted is not between 0 and 99"); 
    } 
} 
Console.WriteLine("You chose the secret value, well done!"); 
+0

只需從第二個'num'前刪除'int' – paqogomez

+0

雙聲明... –

+0

並使用單位變量編號..... – Steve

回答

2

的問題是,你與int num聲明變量的兩倍。您不需要在循環內重新聲明變量,只需指定它:

int num = 0; // initialized num to 0 here 
while (num != 999) 
{ 
    Console.WriteLine("Enter a number between 0 and 99"); 
    string input = Console.ReadLine(); 
    try 
    { 
     num = Convert.ToInt32(input); // Changed int num to num here 
     Console.WriteLine("This is element number " + num + " : " + randNums[num]); 
    } 
    catch 
    { 
     Console.WriteLine("Data inputted is not between 0 and 99"); 
    } 
} 
Console.WriteLine("You chose the secret value, well done!"); 
2

您有int num在同一範圍內定義兩次。改變其中一個的名字。因爲您已經定義了一個循環,所以循環內的一個無效。

如果您想重新分配相同的變量,您也可以從內部刪除int。這樣每次都會用新值覆蓋它。

此外,當您第一次初始化它時,一定要爲其分配一個值。

例子:

int num = 0; 
+0

雖然我希望它們是相同的東西。 –

+0

請看我的編輯 – aw04

+0

@TomCarter,你想讓他們一樣嗎?我不明白這一點。這似乎表明你希望'num'始終爲0. – paqogomez

0

您試圖聲明2個具有相同名稱的不同變量。不要聲明第二個,只需使用您已經聲明的那個(在第二次使用時取下int)。

... 
    try 
    { 
     num = Convert.ToInt32(input); // <-- Using existing declaration here 
     Console.WriteLine("This is element number " + num + " : " + randNums[num]); 
    } 
... 
0

您有兩個具有相同名稱的int變量。您需要更改另一個,因爲您的輸入的int變量將接受用戶分配的編號,另一個int變量負責檢測輸入的編號是否爲999。

1

除了其他的答案,你可以這樣做,例如:

if (someCondition) 
{ 
    int num = 23; 
} 
else 
{ 
    int num = 12; 
} 

但你不能做到這一點:

int num = 12; 
if(someCondition) 
{ 
    int num = 23; 
} 

因爲所有的變量都有它自己的範圍,如果你在外部範圍中定義了一個變量,那麼你不能在內部範圍內定義一個同名的新變量。所以如果你只是想更新變量的值,你不需要再次聲明它,只需使用一個簡單的作業。見Compiler Error CS0136這樣做更多細節的裝備。