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

Вы не вызываете методы Total в тех же экземплярах класса FizzBuzz, над которыми вы уже делали! Почему вы создаете так много - каково было ваше намерение? Почему бы просто не сделать один в начале и не называть все методы? – Rup

+0

согласен с @Rup, почему вы создаете так много объектов, а затем вызываете каждый метод на объектах diff? – exexzian

ответ

1

Почему вы создаете новые экземпляры 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

Смежные вопросы