2013-10-27 2 views
0

마지막 몇 q에 모든 도움을 주셔서 감사합니다! 나는 하나의 문제 만 남았을 것이라고 생각한다. 어떤 이유로 countOfX 변수의 값을 인쇄하지 않습니까? 내가 볼 수있는 한 분명히 무언가가 빠져 있습니다!왜 내 프로그램이 countOfX 값을 출력하지 않습니까?

누군가가 올바른 방향으로 나를 가리킬 수 있기를 바랍니다. 어떤 도움이라도 대단히 감사합니다.

using System 

namespace Part1Skeleton 
{ 
class FizzBuzz 
{ 
    int countOfFizz; 
    int countOfBuzz; 
    int countOfFizzBuzz; 
    int countOfPrime; 

    public static void Main() 
    { 
     int input = 1; 
     //string enter; 

     FizzBuzz fb = new FizzBuzz(); 
     fb.BeginTesting(); 

     while (input <= 20) 
     { 
      //Console.WriteLine("Please enter a number: "); 
      //enter = Console.ReadLine(); 
      //input = int.Parse(enter); 

      fb.BeginTesting(); 
      fb.IsFizz(input); 
      fb.IsBuzz(input); 
      fb.IsFizzBuzz(input); 
      fb.IsPrime(input); 

      input++; 
     } 
     fb.TotalFizz(); 
     fb.TotalBuzz(); 
     fb.TotalFizzBuzz(); 
     fb.TotalPrime(); 
    } 

    public bool IsFizz(int input) 
    { 
     if (input % 9 == 0 && input != 0) 
     { 
      Console.WriteLine("Fizz"); 
      countOfFizz++; 
      return true; 
     } 
     return false; 
    } 

    public bool IsBuzz(int input) 
    { 
     if (input % 13 == 0 && input != 0) 
     { 
      Console.WriteLine("Buzz"); 
      countOfBuzz++; 
      return true; 
     } 
     return false; 
    } 

    public bool IsFizzBuzz(int input) 
    { 
     if (input % 9 == 0 && input % 13 == 0 && input != 0) 
     { 
      Console.WriteLine("FizzBuzz"); 
      countOfFizzBuzz++; 
      return true; 
     } 
     return false; 
    } 

    public bool IsPrime(int input) 
    { 
     if (input == 0 || input == 1) 
     { 
      Console.WriteLine(input); 
      return false; 
     } 
     else if (input % 9 == 0 || input % 13 == 0) 
     { 
      return false; 
     } 
     else 
     { 
      for (int i = 2; i < input; i++) 
      { 
       if (input % i == 0 && i != input) 
       { 
        Console.WriteLine(input); 
        return false; 
       } 
      } 
     } 
     Console.WriteLine("Prime"); 
     countOfPrime++; 
     return true; 
    } 

    public void BeginTesting() 
    { 
     countOfFizz = 0; 
     countOfBuzz = 0; 
     countOfFizzBuzz = 0; 
     countOfPrime = 0; 
    } 

    public int TotalFizz() 
    { 
     Console.WriteLine("Number of Fizz: "); 
     Console.Write(countOfFizz); 
     return countOfFizz; 
    } 

    public int TotalBuzz() 
    { 
     Console.WriteLine("Number of Buzz: "); 
     Console.Write(countOfBuzz); 
     return countOfBuzz; 
    } 

    public int TotalFizzBuzz() 
    { 
     Console.WriteLine("Number of FizzBuzz: "); 
     Console.Write(countOfFizzBuzz); 
     return countOfFizzBuzz; 
    } 

    public int TotalPrime() 
    { 
     Console.WriteLine("Number of Prime: "); 
     Console.Write(countOfPrime); 
     return countOfPrime; 
    } 

} 

}

+0

예상 출력은 무엇을하려고? 왜 일부 줄이 주석 처리 되었습니까? – Ofiris

+1

FizzBuzz 클래스의 동일한 인스턴스에서 Total 메서드를 호출하지 않아도됩니다. 왜 그렇게 많은 것을 창조하고 있습니까? 당신의 의도는 무엇입니까? 왜 처음부터 하나 만들고 그 모든 메소드를 호출하지 않는 것이 좋을까요? – Rup

+0

@Rup과 동의 한 이유는 왜 많은 객체를 생성하고 각각 diff 객체에 대한 메소드를 호출하는 것입니까? – exexzian

답변

1

왜 while 루프에 FizzBuzz의 새로운 인스턴스를 작성? while 루프가 시작하기 전에 하나의 인스턴스를 작성하여 프로그램 전체에서 사용하십시오.

이 주요 코드

public static void Main() 
    { 
     int input = 1; 
     //string enter; 

     FizzBuzz fb = new FizzBuzz(); // create a single instance 
     fb.BeginTesting(); // start testing 

     while (input <= 20) 
     { 
      //Console.WriteLine("Please enter a number: "); 
      //enter = Console.ReadLine(); 
      //input = int.Parse(enter); 
      fb.IsFizz(input); 
      fb.IsBuzz(input); 
      fb.IsFizzBuzz(input);     
      fb.IsPrime(input); 

      input++; 
     } 

     fb.TotalFizz();    
     fb.TotalBuzz();    
     fb.TotalFizzBuzz();    
     fb.TotalPrime(); 
    } 
+0

조언 해 주셔서 감사합니다! 나는 지금 그것을 바꿨다, 나는 심지어 코드의 그 부분을 보았다. 지금은 훨씬 좋아 보인다. 그것도 아직 카운트를 인쇄하지? 어떤 아이디어. – willemorley

+0

최신 코드를 제공 할 수 있습니까? –

+0

ive 님이 원본 게시물을 편집했습니다. – willemorley

관련 문제