看板 C_Sharp 關於我們 聯絡資訊
最近在看書自學 用迴圈一口氣列出九九乘法表我會 2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 ... .. . 不過書上出的題目是要列成下面那樣 1 2 3 4 5 6 7 8 9 1 1 2 3 4 5 6 7 8 9 2 2 4 6 8 10 12 14 16 18 3 3 6 9 12 15 18 21 24 27 4 4 8 12 16 20 24 28 32 36 ... .. . 我的想法是 int x = 1, y = 1; //宣告X軸跟Y軸 string str = Convert.ToString(x); Console.Write(str.PadLeft(4)); x++; while (x < 10) { str = Convert.ToString(x); Console.Write(str.PadLeft(3)); x++; if (x == 10) { Console.Write("\n"); x = 1; break; } }//先列出第一行 while (y < 10) { Console.Write(y); //印出每行的第一個表示"Y軸"的數字 if (x < 10) { str = Convert.ToString(x * y); Console.Write(str.PadLeft(2)); x++; } //這個if一次印一行XY相乘的結果 else { Console.Write("\n"); y++; x = 1; } // x > 9 跳下一行 } Console.ReadLine(); 執行出來的結果是 1 2 3 4 5 6 7 8 9 1 11 21 31 41 51 61 71 81 91 2 22 42 62 82102122142162182 3 33 63 93123153183213243273 ... .. . 後面那個非預期的數字我看不出來是哪邊跑出來的 有沒有前輩可以指點一下是哪個環節出錯呢? 我猜是str = Convert.ToString(x * y);這段的問題? -- ╔═ ═╦╦═════╦═════╗ ◤◤◤ ╠╣飛鳥ももこ╠═╗ ║ ║╚═════╝ ╚═╦═╣ ║╔══════╗╔═╩═╣ █◤ ╠╣Momoko Asuka╠╝ ║ ◣◢◣◢╩╩══════╩════╝ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.150.222
LaPass:錯在 Console.Write(y);沒判斷吧? 05/04 15:07
LaPass:你每跑一次迴圈都會執行次那一行,你看你乘出來的數字的後 05/04 15:09
LaPass:面都多個y 05/04 15:09
gasbomb:我剛剛也抓到了,現在正在想辦法修改 謝謝 ^^ 05/04 15:12
gasbomb:改好了! 程式真不是腦袋不清楚的人學得來的 orz 05/04 15:24
if4:可以請問是哪一本書嗎?謝謝 ^_^ 05/04 15:46
gasbomb:visual C# 程式設計16堂課 我感覺這本書講得有點快 05/04 16:00
if4:誰寫的啊?哪一個書局?因為我不知道要怎麼找...謝謝 ^_^ 05/04 16:11
gasbomb:碁峰 李啟龍 不是google就有答案了...? 05/04 16:19
if4:google是一票答案問你不是比較快?XD先不說這個,我有一個疑問 05/04 16:27
if4:if (x == 10) { 這一行後面不是不會執行到嗎?因為 05/04 16:29
if4:while (x < 10) 不是最多執行到 9 而已...? 05/04 16:30
不會 假設目前x == 9 while (x < 10) { // 9 < 10, 所以下面開始跑 str = Convert.ToString(x); Console.Write(str.PadLeft(3)); x++; // x++, 現在 x == 10 if (x == 10) { // x == 10, 所以下面開始跑 Console.Write("\n"); x = 1; break; 其實while (x < 10)應該寫成while (true)就好了 (x < 10)好像有點畫蛇添足 ;;
if4:為什麼還要特別 break 出來?請教一下..我沒學過C#只學過C++/C 05/04 16:33
因為不break的話 x = 1; 然後跳回去while (x < 10) 這樣會跑不完阿 ※ 編輯: gasbomb 來自: 220.132.150.222 (05/04 16:39)
if4:我知道了...你將 if 放在 x++ 後面...對不起...XD 05/04 16:37
gasbomb:XD 05/04 16:39
if4:我習慣迴圈遞增放在最後面,放在中間的,很少見XD 05/04 16:45
gasbomb:這樣放算是壞習慣嗎? 我學C#之前只有"玩"過一點Ruby 05/04 16:47
if4:因為另外一個迴圈 for (c#有嗎?)是放在最後面... 05/04 16:50
gasbomb:有, 可是我不太喜歡用 (跑 05/04 16:52
if4:for 的無窮迴圈 for(;;) 很經典,比 while(true) 還經典XD 05/04 16:57
optimist9266:你現在的問題只是你不知道怎麼呈現而已啊 05/04 19:49
f1234518456:用個二維陣列比較實在 05/04 20:12
gasbomb:我還在新手區阿,總不能越級打怪 XD 05/04 20:20
if4:『visual C# 程式設計16堂課』範例多嗎?16堂當然快囉^^ XD 05/05 00:57