[問題] 索引超出範圍…參數index

作者: reccaX (渺小的正義)   2015-11-04 15:54:17
各位前輩大家好,我是剛學習C#的新手,沒有其他程式基礎。
所以可能很多基礎的東西不是很了解,還請前輩多多指教。
目前寫老師交代的作業時遇到一個問題,我想要用windowsform的textbox輸入4個數字
然後和隨機出來的數字進行猜數字的XAXB比對,但是會跳出:
索引超出範圍。必須為非負數且小於集合的大小。 參數名稱 index
搜尋網路上這問題好像大部分出現在陣列,可是我依照老師的範例是用list去執行,
同時再產生一個隨機4位數字的int list進行比對就不會出現這個問題,
目前推測是Textbox輸入的數字有問題,想請問問題可能出在哪裡?
以下是CODE:
public List<int> UserAnswer = new List<int>();
int UserAns = 0;
if (textBox1.Text.Length < 4)//判斷玩家輸入數字數量
{
}
else
{
UserAns = int.Parse(textBox1.Text);
UserAnswer.Add(UserAns);
}
Textbox有用MaxLength限制4,
我的想法是在位數小於4的時候不做任何事情,
不小於4的時候將這輸入轉換成int整數,並且加入list
作者: bantime (景)   2015-11-04 16:29:00
出問題的code應該不在這裡你把其他部分貼上來看看
作者: J002 (阿里山 我來了XD~)   2015-11-04 17:07:00
推測有問題的應該是 UserAns = int.Parse(textBox1.Text);假設輸入0123 -> UserAns就會變成123這應該是跟您底下想要執行的code有衝突然後您的UserAnswer就只有123一個元素,Count = 1然後就會跳出索引超出範圍的問題@@"
作者: reccaX (渺小的正義)   2015-11-04 17:18:00
感謝兩位 我大概ㄢ理解了 我試著處理看看
作者: TameFoxx (foxx)   2015-11-04 18:46:00
你用subString的方法,分別將四個數字存入然後可以用contains的方法判斷答案中有無正解若有擇判斷索引值是否相同,就不必包兩回圈了哦對了,用分割字串可能比substring更方便
作者: Litfal (Litfal)   2015-11-05 12:11:00
這個題目用字串處理比較輕鬆,免轉數字,Parse或Regex檢查

Links booklink

Contact Us: admin [ a t ] ucptt.com