2017-10-26 20 views
-4

私はプログラミングが本当に新しいので、数値が500、2000、5000より小さいか大きいかをテストする小さなプログラミングを書かなければなりません。今ではこれを書いていますが、数字が5000より大きい場合でも、数字は500より小さいと言います。なぜ誰が知っていますか?私が得るすべての助けを感謝しなさい。 :)C#ifステートメントを比較する数値

は、ここでは、コードです:rebe = Console.Read();からrebe = Convert.ToDouble(Console.ReadLine());にご入力

double rebe, fuenfh = 500.00, zweit = 2000.00, fuenft = 5000.00; 
    //zweiPro = 2.00, fuenfPro = 5.00, zehnPro = 10.00; 

Console.WriteLine("How big is the number? Wie groß war Ihr Rechnungsbetrag? "); 
rebe = Console.Read(); 

if (rebe >= fuenfh) 
{ 
    if (rebe >= zweit) 
    { 
     if (rebe >= fuenft) 
     { 
      Console.WriteLine("bigger or same as 5000"); 
      Console.ReadLine(); 
      Console.Read(); 
     } 

     else 
     { 
      Console.WriteLine("bigger or same as 2000 but smaller than 5000 // Groesser gleich als 2000 aber kleiner als 5000"); 
      Console.ReadLine(); 
      Console.Read(); 
     } 
    } 

    else 
    { 
     Console.WriteLine("bigger or same as 500 but smaller than 2000 // Groesser gleich 500 aber kleiner als 2000"); 
     Console.ReadLine(); 
     Console.Read(); 
    } 
} 
else 
{ 
    Console.WriteLine("smaller than 500 // Leider gibt es keinen Rabatt. :("); 
    Console.ReadLine(); 
    Console.Read(); 
} 
+1

*「500、2000、および5000よりも小さいか大きい場合」* - 私には3つの独立した(ネストされていない)「if/else」のように聞こえる。 – Sinatr

+4

デバッガを使用してコードをステップ実行し、各ステップで値を調べます。これは簡単なコードなので、プログラムの作成を計画している場合はデバッグスキルを習得する必要があります。 – xxbbcc

+0

数値を比較するには、文字列を整数に解析する必要があります。 double num = Double.Parse(rebe); – jdweng

答えて

1

これは、入力をダブル(mnieldによって暗示される)に変換するだけでなく、一般的にコードを読みやすくする方法です。条件を逆転させると、コードがどのくらい短くなるか注意してください。

Console.WriteLine("How big is the number?"); 
double amount = Convert.ToDouble(Console.Readline()); 

if (amount < 500.0) 
{ 
    Console.WriteLine("smaller than 500"); 
} 
else if (amount < 2000.0) 
{ 
    Console.WriteLine("bigger or same as 500 but smaller than 2000"); 
} 
else if (amount < 5000.0) 
{ 
    Console.WriteLine("bigger or same as 2000 but smaller than 5000"); 
} 
else 
{ 
    Console.WriteLine("bigger or same as 5000"); 
} 

Console.ReadLine(); 
+0

ありがとう:)私のコードよりはっきりと読みやすい;) – CERYON

2

変更。私はあなたが期待した価値を引き出しているとは思わない。

0
double fuenfh = 500.00, zweit = 2000.00, fuenft = 5000.00; 
      //zweiPro = 2.00, fuenfPro = 5.00, zehnPro = 10.00; 
      do 
      { 
       Console.WriteLine("\nWie groß war Ihr Rechnungsbetrag? "); 
       var eingabe = double.TryParse(Console.ReadLine(), out var rebe); 
       if (eingabe) 
       { 
        if (rebe >= fuenft) { Console.Write($"Die eingabe ist größer oder gleich {fuenft}"); } 
        else if (rebe >= zweit) { Console.Write($"Die eingabe ist größer oder gleich {zweit} aber kleiner als {fuenfh}"); } 
        else if (rebe >= fuenfh) { Console.Write($"Die eingabe ist größer oder gleich {fuenfh} aber kleiner als {zweit}"); } 
        else { Console.Write($"Die eingabe ist kleiner als {fuenfh}"); } 
       } 
       else { Console.WriteLine("Bitte Zahl eingeben!"); } 
      } while (true); 

この方法であなたは、ループ内で全体funktionを持っていますよ!

double.TryParse - あなたの機能をテストするための無限ループ - 数字が入力された場合(真)しながら、あなたの変数を持つブロックが} {行う 場合、それはであなたを送る - (eingabe)場合はdouble型 にご入力を変換し、常にデバッグをクリックすることなく

関連する問題