2013-10-24 2 views
0

이 코드는 실행될 때 완전히 루프되어야하지만, 루프는 완벽하게 실행되지 않습니다. 그러나 루프를 추가하면 첫 번째 부분은 정상적으로 작동하지만 다른 번호를 입력하면 이전과 똑같은 결과가 표시됩니다 결코 바뀌지 않으며, 그것이 예정되어있을 때 끝나지도 않습니다. 그것은 어리석은 것처럼 보일지 모르지만 나는 이것에 대해 새로운 사람입니다. 틀린 종류의 루프를 사용하고 있습니까?이 루프를 잘못 만들었습니까?

using System; 

    class FizzBuzz 
    { 
    //Global variables 
    int fizzCount; 
    int buzzCount; 
    int fizzbuzzCount; 
    int primeCount; 


    public bool IsFizz(int input) 
    { 
     if (input % 9 ==0) 
     { 
      fizzCount++; //Add 1 to fizzCount 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
    public bool IsBuzz(int input) 
    { 
     if (input % 13 ==0) 
     { 
      buzzCount++; //Add 1 to buzzCount 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 

    public bool IsFizzBuzz(int input) 
    { 
     if ((input % 13 ==0) && (input % 9 ==0)) 
     { 
      fizzbuzzCount++; //Add 1 to fizzbuzzCount 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 

    public bool IsPrime(int input) 
    { 
     for(int i = 2; i < input; i++) 
     { 
      if (input % i ==0) 
      { 
       return false; 
      } 
     } 

     primeCount++; //Add 1 to primeCount 
     return true; 
    } 

    public void BeginTesting() 
    { 
     fizzCount = 0; //Resets fizzCount 
     buzzCount = 0; //Resets buzzCount 
     fizzbuzzCount = 0; //Resets fizzbuzzCount 
     primeCount = 0; //Resets primeCount   
    }  

    public int TotalFizz() 
    { 
     return fizzCount; 
    } 
    public int TotalBuzz() 
    { 
     return buzzCount; 
    } 
    public int TotalFizzBuzz() 
    { 
     return fizzbuzzCount; 
    } 
    public int TotalPrime() 
    { 
     return primeCount; 
    } 

    public static void Main() 
    {  
     Console.WriteLine("Please enter a number "); 
     int input; 
     string inputString; 
     inputString = Console.ReadLine(); 
     input = int.Parse(inputString); 
     while(input !=0) 
     { 


      FizzBuzz fizzbuzz = new FizzBuzz(); 

      Console.WriteLine("IsFizz " + fizzbuzz.IsFizz(input)); //Shows if IsFizz is true or false 
      Console.WriteLine("IsBuzz " + fizzbuzz.IsBuzz(input)); //Shows if IsBuzz is true or false 
      Console.WriteLine("IsFizzBuzz " + fizzbuzz.IsFizzBuzz(input)); //Shows if IsFizzBuzz is true or false 
      Console.WriteLine("IsPrime " + fizzbuzz.IsPrime(input)); //Shows if IsPrime is true or false 
      Console.WriteLine("Fizz Count total is " + fizzbuzz.TotalFizz()); //Shows the total amount of Fizz counters 
      Console.WriteLine("Buzz Count total is " + fizzbuzz.TotalBuzz()); //Shows the total amount of Buzz counters 
      Console.WriteLine("FizzBuzz Count total is " + fizzbuzz.TotalFizzBuzz()); //Shows the total amount of FizzBuzz counters 
      Console.WriteLine("Prime Count total is " + fizzbuzz.TotalPrime()); 
      Console.WriteLine("Please enter another number or press 0 to exit");//Shows the total amount of Prime counters 
      inputString = Console.ReadLine(); 

     } 
    } 
} 
+0

당신은 설정되지 않은'input', 단지'inputString'가 ... 뭔가에 마지막 줄을 변경'입력 = int.Parse (Console.ReadLine());'. –

답변

0

inputString을 int로 변환하고 input 변수로 설정하십시오.

while(input !=0) 
{ 
    FizzBuzz fizzbuzz = new FizzBuzz(); 

    Console.WriteLine("IsFizz " + fizzbuzz.IsFizz(input)); //Shows if IsFizz is true or false 
    Console.WriteLine("IsBuzz " + fizzbuzz.IsBuzz(input)); //Shows if IsBuzz is true or false 
    Console.WriteLine("IsFizzBuzz " + fizzbuzz.IsFizzBuzz(input)); //Shows if IsFizzBuzz is true or false 
    Console.WriteLine("IsPrime " + fizzbuzz.IsPrime(input)); //Shows if IsPrime is true or false 
    Console.WriteLine("Fizz Count total is " + fizzbuzz.TotalFizz()); //Shows the total amount of Fizz counters 
    Console.WriteLine("Buzz Count total is " + fizzbuzz.TotalBuzz()); //Shows the total amount of Buzz counters 
    Console.WriteLine("FizzBuzz Count total is " + fizzbuzz.TotalFizzBuzz()); //Shows the total amount of FizzBuzz counters 
    Console.WriteLine("Prime Count total is " + fizzbuzz.TotalPrime()); 
    Console.WriteLine("Please enter another number or press 0 to exit");//Shows the total amount of Prime counters 
    inputString = Console.ReadLine(); 

    // try to convert, if is not succedde, keep the original value (0). 
    int.TryParse(inputString, out input); 
} 
+0

감사합니다. 완벽하게 작동했습니다. – user2915206

0

이 줄

input = int.Parse(inputString);

는 루프 내이어야한다.

0

놓고 루프의 시작 부분에 Console.ReadLine을, 그래서 당신은 그것을 한 번만 이 필요합니다.
또한 int.TryParse을 사용하면 사용자가 숫자 이외의 문자를 입력 할 때 종료됩니다.

public static void Main() 
{  
    Console.WriteLine("Please enter a number "); 
    int input; 
    string inputString; 

    while(input !=0) 
    { 
     inputString = Console.ReadLine(); 
     if (!int.TryParse(inputString, out input)) break; 

     FizzBuzz fizzbuzz = new FizzBuzz(); 

     Console.WriteLine("IsFizz " + fizzbuzz.IsFizz(input)); //Shows if IsFizz is true or false 
     Console.WriteLine("IsBuzz " + fizzbuzz.IsBuzz(input)); //Shows if IsBuzz is true or false 
     Console.WriteLine("IsFizzBuzz " + fizzbuzz.IsFizzBuzz(input)); //Shows if IsFizzBuzz is true or false 
     Console.WriteLine("IsPrime " + fizzbuzz.IsPrime(input)); //Shows if IsPrime is true or false 
     Console.WriteLine("Fizz Count total is " + fizzbuzz.TotalFizz()); //Shows the total amount of Fizz counters 
     Console.WriteLine("Buzz Count total is " + fizzbuzz.TotalBuzz()); //Shows the total amount of Buzz counters 
     Console.WriteLine("FizzBuzz Count total is " + fizzbuzz.TotalFizzBuzz()); //Shows the total amount of FizzBuzz counters 
     Console.WriteLine("Prime Count total is " + fizzbuzz.TotalPrime()); 
     Console.WriteLine("Please enter another number or press 0 to exit");//Shows the total amount of Prime counters 

    } 
} 
0
public static void Main() 
{ 
Console.WriteLine("Please enter a number "); 
string inputString; 
inputString = Console.ReadLine(); 
int input; 
input = int.Parse(inputString);  
while(input !=0) 
{ 
FizzBuzz fizzbuzz = new FizzBuzz(); 
Console.WriteLine("IsFizz {0}", fizzbuzz.IsFizz(input)); 
Console.WriteLine("IsBuzz {0}", fizzbuzz.IsBuzz(input)); 
Console.WriteLine("IsFizzBuzz {0}", fizzbuzz.IsFizzBuzz(input)); 
Console.WriteLine("IsPrime {0}", fizzbuzz.IsPrime(input)); 
Console.WriteLine("Fizz Count total is {0}", fizzbuzz.TotalFizz()); 
Console.WriteLine("Buzz Count total is {0}", fizzbuzz.TotalBuzz()); 
Console.WriteLine("FizzBuzz Count total is {0}", fizzbuzz.TotalFizzBuzz()); 
Console.WriteLine("Prime Count total is {0}", fizzbuzz.TotalPrime()); 
Console.WriteLine("Please enter another number or press 0 to exit"); 
inputString = Console.ReadLine(); 
input = int.Parse(inputString); 
} 
} 
관련 문제