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

相關問題