C_Sharp 板


LINE

在下剛開始學C#幾週 是要寫一個初學者都會碰到的猜數字(nAnB) 本來想說自己可以寫出來 不過卡在最後一個點想了兩三個小時 也查了許久還是無解 因此來板上請教 以下是部份code(一個for loop內): string Resp = sr.ReadLine(); if (Resp.Length != 4) { sw.WriteLine("Error 3: The number of digit is incorrect."); } 這個猜數字是用StreamReader讀取測值然後把回應用StreamWriter輸出的 卡住的這個點是要檢測一個error 也就是輸入位數不符(非四位數) 但debug的時候就出現了 「並未將物件參考設定為物件的執行個體。」 爬文了一下發現似乎與value不能是null有關 在下自己測了一下覺得應該是因為讀取(sr)的關係讓Resp.Length出了問題 但礙於自己是初學者實在不懂要如何解決這個問題 到MSDN搜尋到了也是看的很吃力 希望板上前輩指教... 感恩 ========================================================================== 小弟還是補一下完整的code 這樣可能比較容易找到問題在哪 static void Main(string[] args) { StreamReader sr = new StreamReader("file path"); StreamWriter sw = new StreamWriter("file path"); string input = sr.ReadLine(); //讀入答案 Int32 Dig4 = Int32.Parse(input) / 1000; Int32 Dig3 = Int32.Parse(input) % 1000 / 100; Int32 Dig2 = Int32.Parse(input) % 1000 % 100 / 10; Int32 Dig1 = Int32.Parse(input) % 1000 % 100 % 10; //用取餘數拆成個、十、百、千位數 int LineCount = 0; while (sr.Peek() >= 0) { sr.ReadLine(); LineCount++; } //計算行數 for (int i = 0; i < LineCount; i++) { string Resp = sr.ReadLine(); if (Resp.Length != 4) { sw.WriteLine("Error 3: The number of digit is incorrect."); } //確認讀入的測值的位數是否正確(四位數) else { int Res = Int32.Parse(Resp); int dig4 = Res / 1000; int dig3 = Res % 1000 / 100; int dig2 = Res % 1000 % 100 / 10; int dig1 = Res % 1000 % 100 % 10; //將測值拆解 if (dig4 == 0) { sw.WriteLine("Error 1: The leftmost digit is “0”."); } //最左位數不得為0 else if (dig1 == dig2 || dig1 == dig3 || dig1 == dig4 || dig2 == dig3 || dig2 == dig4 || dig3 == dig4) { sw.WriteLine("Error 2: Digit is re-used."); } //輸入的四個數字中不得出現重複的數字 //用繁複的土法煉鋼寫成的nAnB else { int A = 0, B = 0; if (dig1 == Dig1) { A++; } if (dig2 == Dig2) { A++; } if (dig3 == Dig3) { A++; } if (dig4 == Dig4) { A++; } if (dig1 == Dig2) { B++; } if (dig1 == Dig3) { B++; } if (dig1 == Dig4) { B++; } if (dig2 == Dig1) { B++; } if (dig2 == Dig3) { B++; } if (dig2 == Dig4) { B++; } if (dig3 == Dig2) { B++; } if (dig3 == Dig1) { B++; } if (dig3 == Dig4) { B++; } if (dig4 == Dig2) { B++; } if (dig4 == Dig3) { B++; } if (dig4 == Dig1) { B++; } sw.WriteLine(A + "A" + B + "B\n"); } } } sw.Close(); Console.ReadLine(); } 不好意思code雖然簡單但是很冗長 因為三天前才開始學陣列所以沒有使用陣列來寫 麻煩各位了._. --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.231.65.222
1F:→ james732:http://pastie.org/1714208 試試看加這個 if 03/26 00:44
※ 編輯: jerry50714 來自: 118.231.65.222 (03/26 01:13)
2F:推 arcred:你算行數時已經把sr讀到底了 正式來的時候只會讀到null 03/26 03:02
3F:→ jerry50714:原來如此! 沒想到這點! 03/26 09:35
4F:→ jerry50714:感謝樓上兩j大和a大 多new一個sr總算解決了! 03/26 09:43
5F:→ optimist9266:為看先猜你的input文件最後面有新行字串 03/29 01:39







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP