2013-11-02 51 views
1

我正在解決比較兩個浮點數的問題,我想讓用戶輸入所需的值。所以我寫了下面的代碼:Console.Read()不允許我第二次輸入任何東西

Console.WriteLine("Enter first number: "); 
    double num1 = Console.Read(); 
    Console.WriteLine("Enter second number: "); 
    double num2 = Console.Read(); 

不幸的是,我只能輸入第一個數字。在控制檯輸出「輸入第一個數字:」並輸入一個數字後,它會跳到最後,不讓我輸入第二個數字......對此有何看法?

+2

你見過這個:http://stackoverflow.com/questions/6825943/difference-between-console-read-and-console-readline? –

+0

是的,我有,但是如果我使用Read或ReadLine並不重要......它仍然是同樣的問題。我試圖使用ReadLine和解析值加倍,但它在控制檯本身給我一個錯誤信息... –

+0

請張貼錯誤消息 – UnholySheep

回答

1

這是Console.Read()的默認行爲。從Difference between Console.Read() and Console.ReadLine()?

Console.Read()基本上讀取一個字符,所以如果你在一個控制檯,然後你按下一個鍵然後控制檯將關閉。 [...]

您應該改用Console.ReadLine();

Console.WriteLine("Enter first number: "); 
double num1 = double.Parse(Console.ReadLine()); 
Console.WriteLine("Enter second number: "); 
double num2 = double.Parse(Console.ReadLine()); 
+1

它第一次沒有工作,但事實證明,當我輸入一個浮點值時,我應該使用逗號而不是小數點。換句話說,如果我輸入2.56它會顯示一條錯誤消息,但是當我輸入2,56時,一切正常!謝謝! –

0

嘗試使用Console.ReadLine()代替。 Console.Read只讀取單個字符

Console.WriteLine("Enter first number: "); 
    double num1 = double.Parse(Console.ReadLine()); 
    Console.WriteLine("Enter second number: "); 
    double num2 = double.Parse(Console.ReadLine()); 

或者用的TryParse:

Console.WriteLine("Enter first number: "); 
    double num1, num2; 
    double.TryParse(Console.ReadLine(), out num1); // double.TryParse() method also returns a bool, so you could flag an error to the user here 
    Console.WriteLine("Enter second number: "); 
    double.TryParse(Console.ReadLine(), out num2); 
+0

Console.ReadLine返回一個字符串..... – Steve

+0

不會以這種形式工作:'Console.ReadLine()'返回一個字符串。你需要附上一個'Convert.ToDouble()' – UnholySheep

+1

這裏我們不談論類型轉換的方法 – AuthorProxy

0

它假定您已經輸入\ n作爲第二輸入。如果您在第一個Read方法中輸入2個數字。比第一次讀取時數字爲1,第二次數字爲第二個數字。如果要實現noraml行爲,只需替換爲ReadLine(),即