伊莉討論區

標題: 新手來發問 真的是很新的新手(剛寫完hello world... [打印本頁]

作者: s5508520    時間: 2015-8-20 04:52 PM     標題: 新手來發問 真的是很新的新手(剛寫完hello world...

本帖最後由 arthurliuliu 於 2015-9-2 07:51 AM 編輯

第一個可能發生的例外狀況類型 'System.FormatException' 發生於 mscorlib.dll
其他資訊: 輸入字串格式不正確。

  1. string strl;
  2. int price, qty;
  3. Console.WriteLine();
  4. Console.WriteLine("   博碩電腦圖書廣場");

  5. Console.WriteLine("======================");
  6. Console.Write("1. 書名");
  7. strl = Console.ReadLine(); //輸入書名並指定給strl變數
  8. Console.Write("2. 售價");  //輸入售價並使用int.Parse()方法將輸入的資料轉成整數,並指定給qty
  9. price = int.Parse(Console.ReadLine());
  10. Console.Write("3. 數量");  //輸入數量並使用Convert.ToInt32()方法將輸入的資料轉成整數,在指定給qty
  11. qty = Convert.ToInt32(Console.ReadLine());
  12. Console.WriteLine("=========================");
  13. Console.WriteLine("4. 金額:{0}", price*qty);
  14. Console.Read();
複製代碼


我偵錯  結果輸入到售價就出現最上面那個問題@@  求大大教學
未依規定包覆程式碼,版主代為編輯。



作者: u0084500    時間: 2015-8-21 09:06 AM

Hi, 你可能得先看一下這個
msdn.microsoft.com/zh-tw/library/bb397679.aspx
如果問題一樣應該可以試著先用try catch抓
然後改用tryParse
作者: bbcaman    時間: 2015-8-22 12:24 PM

Hello, 可能要先確定輸入的是什麼值,
會不會是輸入到全形的數字??
全形的文字好像無法直接轉換成數值

不然就如同樓上所提到的,用 Int.TryParse()
作者: mdlin    時間: 2015-8-22 09:41 PM

輸入的東西影問題.要確定輸入的是什麼. 裡面是否包含了無法轉換為數字的字元,
作者: xoxo1100    時間: 2015-8-25 11:36 AM

你售價該不會有打到小數吧

是的話變數不能設int
作者: n080925    時間: 2016-2-10 02:30 PM

第10行也改成
Convert.ToInt32()
這樣呢?
作者: smallanan    時間: 2016-2-18 01:47 AM

推u0084500大大的方法

改用IF去判斷他回傳的是否轉換成功的狀態Int.TryParse()

true再把變數寫入price 裡
作者: bigpig200126    時間: 2016-3-13 09:15 PM

看起來是輸入型態的問題,建議可以像樓上說的先包好一層Try Catch後,在看輸入的資料行別是否是String、int、decimal、float,在做適當的轉型,可以利用Intellence,輸入Convert.跳出的資料去篩選




歡迎光臨 伊莉討論區 (http://aaa.eyny.com/) Powered by Discuz!