2011-09-23 1 views
5
private void ReadUnitPrice() 
    { 
     Console.Write("Enter the unit gross price: "); 
     unitPrice = double.Parse(Console.ReadLine()); 
    } 

Điều này sẽ hiệu quả, nhưng tôi thiếu điều gì đó hiển nhiên. Bất cứ khi nào tôi nhập vào một đôi nó mang lại cho tôi lỗi: System.FormatException: Chuỗi đầu vào không có định dạng đúng. Lưu ý rằng 'unitPrice' được khai báo là gấp đôi.System.FormatException: Chuỗi đầu vào không đúng định dạng

+0

gì giá trị mà bạn đang nhập? –

+0

giá trị trong vòng 0-10 như 4.5 hoặc 5.5 –

Trả lời

6

Có thể bạn đang sử dụng biểu tượng tách dấu phẩy sai hoặc thậm chí tạo ra lỗi khác khi chỉ định giá trị kép. Dù sao trong những trường hợp như vậy, bạn phải sử dụng phương pháp Double.TryParse() an toàn ngoại trừ và cho phép chỉ định nhà cung cấp định dạng, về cơ bản văn hóa sẽ được sử dụng.

public static bool TryParse(
    string s, 
    NumberStyles style, 
    IFormatProvider provider, 
    out double result 
) 

The TryParse method is like the Parse(String, NumberStyles, IFormatProvider) method, except this method does not throw an exception if the conversion fails. If the conversion succeeds, the return value is true and the result parameter is set to the outcome of the conversion. If the conversion fails, the return value is false and the result parameter is set to zero.

EDIT: trả lời bình luận

if(!double.TryParse(Console.ReadLine(), out unitPrice)) 
{ 
    // parse error 
}else 
{ 
    // all is ok, unitPrice contains valid double value 
} 

Ngoài ra bạn có thể thử:

double.TryParse(Console.ReadLine(), 
       NumberStyle.Float, 
       CultureInfo.CurrentCulture, 
       out unitPrice)) 
+0

vâng, tôi chỉ cố gắng thực sự .. và đoán cái gì, nó hoạt động. Tôi ghét biểu tượng tách dấu phẩy của Thụy Điển bây giờ .. –

+0

TryParse mất nhiều parametres trong đối số của nó và vì tôi là một newbie trong C# và không khá quen thuộc với TryParse sau đó gửi kết quả (vì nó trả về một bool) với Parse cho bây giờ. "Nhận được 2 giá trị trả về" có vẻ hơi hơn đầu atm nhưng tôi sẽ giữ TryParse trong tâm trí để sử dụng trong tương lai. Cảm ơn. –

+0

@ Ryuji89: xem câu trả lời được cập nhật, CHỈNH SỬA phần – sll