2013-10-27 197 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

您并未在您做过任何工作的FizzBu​​zz类的相同实例上调用Total方法!你为什么创造这么多 - 你的意图是什么?为什么不在开始时就创建一个,并调用所有的方法? – Rup

+0

同意@Ru​​p为什么你创建这么多的对象,然后调用diff对象上的方法? – exexzian

回答

1

你为什么用while循环创建FizzBu​​zz的新实例? 只需在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

我编辑了原文。 – willemorley

相关问题