2017-10-26 4 views
-4

저는 프로그래밍을 처음 접했고 숫자가 500, 2000 및 5000보다 작거나 큰지 테스트하는 약간의 프로그래밍을 작성해야합니다. 이제이 코드를 작성했지만 항상 첫 번째 else 문을 사용합니다 숫자가 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's 나처럼 들립니다. – Sinatr

+4

디버거를 사용하여 코드를 단계별로 실행하고 각 단계에서 값을 검사하십시오. 이것은 사소한 코드이므로 프로그램 작성을 계획하는 경우 디버깅 기술을 배워야합니다. – xxbbcc

+0

숫자를 비교하려면 문자열을 정수로 구문 분석해야합니다. double num = Double.Parse (rebe); – jdweng

답변

1

이것은 입력을 double로 변환하는 것 (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 형 에 입력을 변환 항상 디버그를 클릭하지 않고