2016-03-24 3 views
0

私は電卓をC#で作っていました。ここに乗算部があります---「はい」と入力した後にコンソールが閉じるのはなぜですか?

using System; 
static class calculator 
{ 
    public static void Main() 
    { 
    welcome: 
    Console.WriteLine("Welcome to my calculator, please press enter to   continue"); 
    Console.ReadLine(); 
    Console.WriteLine("Do you want to add, subtract, multiply or divide?"); 
    string x = Convert.ToString(Console.ReadLine()); 
    if (x == "multiply") 
    { 
     Console.WriteLine("Please enter the first value"); 
     decimal value1multiply = Convert.ToDecimal(Console.ReadLine()); 
     Console.WriteLine("Please enter the second value"); 
     decimal value2multiply = Convert.ToDecimal(Console.ReadLine()); 
     Console.WriteLine("Result ="); 
     Console.WriteLine(value1multiply * value2multiply); 
     Console.WriteLine("Thank you for using my calculator!Do you still want to use it?Please answer in 'yes' or 'no' and press 'enter'"); 
     Console.ReadLine(); 
     string yesorno =Console.ReadLine(); 
     if (yesorno == "yes") 
     { 
      goto welcome; 
     } 
     if (yesorno == "no") 
     { 
      Environment.Exit(0); 
     } 
    } 
     } 
     } 

私が聞いてきたら「はい」と入力すると、コンソールが私を歓迎するはずです。しかし、代わりに、私をどこにでも導くことはなく、空白のままです。もう一度Enterキーを押すと、コンソールが閉じます。なぜこれが起こっているのですか?どうすればそれを防ぐことができますか?私が試してみました何

を、私は、コンソールがそれに私をリードしていたが、それは助けにはならなかったことを考えて、(0)environment.exitを削除しようとしました。 Visual Studioでもコードを入力しようとしましたが、結果に違いはありませんでした。 (私は鋭い開発を使用しています)

+3

gotoの代わりに条件付きで使用してください。 gotoは使用しないでください、その悪い練習とみなされます – Mafii

+0

文字列は明らかにnoではなく、yesではありません - それはあなたがenvironment.exitを取り除いてもまだ閉じていない理由です。 yesornoの値をブレークポイントで確認することを検討してください。 – Mafii

+1

文字列の前にconsole.readlineを再配置してください。yesorno = Console.ReadLine(); – rashfmnb

答えて

7

gotoの使用のほかに、多くの場合、あなたはあまりにも多くのReadLineコールを使用しています。ここで

Console.ReadLine(); 
string yesorno = Console.ReadLine(); 

はたぶん、あなたはyesを入力してからは二回をEnterキーを押します。その場合、yesornoは空になり、チェックが失敗します。最初のエントリは、変数に割り当てられていない最初のReadLineによって飲み込まれます。

+0

おかげで素晴らしい答えが問題を完全に解決しました。 – makertech81

+0

ようこそ。デバッガに慣れ親しむことを学ぶ。それは次回お手伝いします。調査したい行にブレークポイントを設定します。それから、あなたは* yes *をタイプした後にあなたがヒットしたのを見たでしょう。 –

関連する問題