[問題] 1A2B遊戲的問題
大家好,最近在寫一個題目是1A2B。
其中有個部分是檢查隨機生成的四位數字是否有重複,
例如0123就可以,但1123就不行(因為1重複了),
但是不太知道怎麼寫,
能執行的時候還是會跑出有重複的數字。
我的步驟如下:
1. 製造一個長度為四的陣列(answer)
2. 然後隨機種子選取四個數字,透過for迴圈放到答案中
3. 跳到檢查的方法中,檢查直到通過,再返回答案存到答案中
我的程式碼如下:
public class GuessNumber
{
public int[] answer;
public void newGame()
{
int[] answer = new int[4];
var random = new Random(Guid.NewGuid().GetHashCode());
for (int i = 0; i < answer.Length; i++)
{
answer[i] = random.Next(0, 10);
}
this.answer = RandomCheck(answer);
}
public int[] RandomCheck(int[] answer)
{
bool repetition = true; //是否有重複
for (int i = 0; i < answer.Length; i++)
{
do
{
repetition = false;
for (int k = 0; k < i; k++)
{
if (answer[i] != answer[k]) continue;
else
{
newGame();
}
}
repetition == true;
} while (repetition == true);
return answer;
}
如果排版錯誤讓大家不好看的話再跟大家道歉,
我再看看怎麼樣可以排的比較好看。
我覺得我在randomcheck的方法中好像出了什麼錯,
因為如果沒有do-while的話,還是會產生有重複四位數字,
一方面我想知道我這邊出錯在哪裡,
二方面我也會嘗試不同寫法,
都很歡迎大家給我意見!非常感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.252.13.37 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1667145501.A.3B2.html
→
10/31 03:40,
2年前
, 1F
10/31 03:40, 1F
→
10/31 03:40,
2年前
, 2F
10/31 03:40, 2F
推
10/31 06:39,
2年前
, 3F
10/31 06:39, 3F
→
02/02 00:16,
2年前
, 4F
02/02 00:16, 4F
討論串 (同標題文章)
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章