2016-10-16 6 views
0

В настоящее время я пытаюсь выяснить, где я ошибся в этой логике кода для задания. Любые замечания или советы будут оценены!Код, не предоставляющий желаемый результат

Выход я продолжать получать независимо от того, что ввод я наношу в продолжает давать мне:

средняя температура 0,

высокая температура 5,

низкая температура 0,

средний исключая самый низкий 0,

количества холодных дней 10

первого класс

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
namespace TemperatureAverager 
{ 
class Temperatures 
{ 
    public double[] weeksTemperatures; 
    public double threshTemp; 
    public double average; 
    public double averageExcludingLowest; 
    public double highest; 
    public double lowest; 
    public int numOfThreshs; 




    public double[] WeeksTemperatures 
    { 
     get 
     { 
      return weeksTemperatures; 
     } 
    } 
    public double ThreshTemp 
    { 
     get 
     { 
      return threshTemp; 
     } 
    } 
    public double Average 
    { 
     set 
     { 
      average = value; 
     } 
     get 
     { 
      return average; 
     } 
    } 
    public double AverageExcludingLowest 
    { 
     set 
     { 
      averageExcludingLowest = value; 
     } 
     get 
     { 
      return averageExcludingLowest; 
     } 
    } 
    public double Highest 
    { 
     set 
     { 
      highest = value; 
     } 
     get 
     { 
      return highest; 
     } 
    } 
    public double Lowest 
    { 
     set 
     { 
      lowest = value; 
     } 
     get 
     { 
      return lowest; 
     } 
    } 
    public int NumberOfThreshs 
    { 
     set 
     { 
      numOfThreshs = value; 
     } 
     get 
     { 
      return numOfThreshs; 
     } 
    } 
    public Temperatures() 
    { 
    } 
    public Temperatures(double[] wTemperatures, double threshT) 
    { 
     weeksTemperatures = wTemperatures; 
     threshTemp = threshT; 
    } 
    public double DetermineAverage() 
    { 
     double average = 0; 
     for (int x = 0; x < 7; x++) 
     { 
      average = average + weeksTemperatures[x]; 
     } 
     average = average/7;  
     return average; 
    } 
    public double DetermineAverageExcludingLowest() 
    { 
     for (int x = 0; x < 7; x++) 
     { 
      averageExcludingLowest = averageExcludingLowest + weeksTemperatures[x]; 
      if (weeksTemperatures[x] < lowest) 
      { 
       lowest = weeksTemperatures[x]; 
      } 
     } 
     averageExcludingLowest = ((averageExcludingLowest - lowest)/7); // calculate average excluding lowest temperature 
     return averageExcludingLowest; 
    } 
    public double DetermineLowest() 
    { 
     for (int x = 0; x < 7; x++) //Traverse through the week's temperatures 
     { 
      if (weeksTemperatures[x] < lowest) //find the lowest temperature of the week 
      { 
       lowest = weeksTemperatures[x]; //and set it to lowest 
      } 
     } 
     return lowest; 
    } 
    public double DetermineHighest() 
    { 
     for (int x = 0; x < 7; x++) //Traverse through the week's temperatures 
     { 
      if (weeksTemperatures[x] > highest) //find the highest temperature of the week 
      { 
       highest = weeksTemperatures[x]; //and set it to highest 
      } 
     } 
     return highest; 
    } 
    public double DetermineNumberOfThreshs() 
    { 
     for (int x = 0; x < 7; x++) //Traverse through the week's temperatures 
     { 
      if (weeksTemperatures[x] < threshTemp) //find the lowest temperature of the week 
      { 
       numOfThreshs++; 
      } 
     } 
     return numOfThreshs; 
    } 
    public override string ToString() 
    { 
     return "=====================\nWeekly Statistics\n" + "---------------------\n" + "Average Temperature: " + average + "\nHighest Temperature: " 
     + highest + "\nLowest Temperature: " + lowest + "\nAvg. Excl. Lowest: " + averageExcludingLowest + "\n# of Cold Days: " + numOfThreshs + "\n====================="; //Formats and the invoice to be printed 
    } 
} 
} 

второй класс

namespace TemperatureAverager 
{ 
class TemperatureApp 
{ 
    static void Main(string[] args) 
    { 
     double[] week = new double[7];  
     string[] days = new string[] { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; //array to track days of week 
     for (int x = 0; x < 7; x++) 
     { 
      Console.Write("What was the temperature on " + days[x] + "?: "); 
      string userTemperatureInput = Console.ReadLine(); 
      week[x] = double.Parse(userTemperatureInput); 
     } 
     Console.Write("How cold is too cold?: "); 
     string userThreshInput = Console.ReadLine();  
     double thresh = double.Parse(userThreshInput); 
     Temperatures weekOne = new Temperatures(week, thresh); 
     Console.WriteLine(weekOne.ToString()); 
     Console.ReadLine(); 
    } 
} 
} 
+1

Вы устанавливаете минимальное значение 0 и самое высокое значение 5 в начале. Вы также должны использовать автоматические свойства, чтобы сохранить дополнительные 11 строк на каждое свойство. – FINDarkside

ответ

1

класса один

public class Temperatures 
{ 
    private double sum; 
    private int daysInWeek; 

    public double[] WeeksTemperatures { get; set; } 
    public double ThreshTemp { get; set; } 
    public double Average { get; set; } 
    public double AverageExcludingLowest { get; set; } 
    public double Highest { get; set; } 
    public double Lowest { get; set; } 
    public int NumOfThreshs { get; set; } 

    public Temperatures(double[] wTemperatures, double threshT) 
    { 
     this.WeeksTemperatures = wTemperatures; 
     this.ThreshTemp = threshT; 
     sum = 0.0; 
     daysInWeek = 7; 
    } 

    public void GetWeekStatistics() 
    { 
     GetSum(); 
     DetermineLowest(); 
     DetermineHighest(); 
     DetermineAverage(); 
     DetermineAverageExcludingLowest(); 
     DetermineNumberOfThreshs(); 
    } 

    private void GetSum() 
    { 
     for (int x = 0; x < daysInWeek; x++) //Traverse through the week's temperatures 
     { 
      this.sum = this.sum + this.WeeksTemperatures[x]; 
     } 
    } 

    public void DetermineLowest() 
    { 
     this.Lowest = this.WeeksTemperatures[0]; 
     for (int x = 0; x < daysInWeek; x++) //Traverse through the week's temperatures 
     { 
      if (this.WeeksTemperatures[x] < this.Lowest) //find the lowest temperature of the week 
      { 
       this.Lowest = this.WeeksTemperatures[x]; //and set it to lowest 
      } 
     } 
    } 

    public void DetermineHighest() 
    { 
     this.Highest = this.WeeksTemperatures[0]; 
     for (int x = 0; x < daysInWeek; x++) //Traverse through the week's temperatures 
     { 
      if (this.WeeksTemperatures[x] > this.Highest) //find the highest temperature of the week 
      { 
       this.Highest = this.WeeksTemperatures[x]; //and set it to highest 
      } 
     } 
    } 

    private void DetermineAverage() 
    { 
     this.Average = this.sum/daysInWeek; 
    } 

    public void DetermineAverageExcludingLowest() 
    { 
     this.AverageExcludingLowest = ((this.sum - this.Lowest)/daysInWeek); // calculate average excluding lowest temperature 
    } 

    public void DetermineNumberOfThreshs() 
    { 
     for (int x = 0; x < daysInWeek; x++) //Traverse through the week's temperatures 
     { 
      if (this.WeeksTemperatures[x] < this.ThreshTemp) //find the lowest temperature of the week 
      { 
       this.NumOfThreshs++; 
      } 
     } 
    } 
    public override string ToString() 
    { 
     return "=====================\nWeekly Statistics\n" + "---------------------\n" + "Average Temperature: " + this.Average + "\nHighest Temperature: " 
     + this.Highest + "\nLowest Temperature: " + this.Lowest + "\nAvg. Excl. Lowest: " + this.AverageExcludingLowest + "\n# of Cold Days: " + this.NumOfThreshs + "\n====================="; //Formats and the invoice to be printed 
    } 
} 

Изменение в классе два

Temperatures weekOne = new Temperatures(week, thresh); 
weekOne.GetWeekStatistics(); 
+0

Whoa. В настоящее время я все еще работаю над этим и не ожидал, что кто-нибудь еще попытается ответить, но спасибо! – Larry

+0

@ Larry Welcome .. !! Можете проголосовать? –

+0

Я только что понял, что есть небольшая ошибка после небольшого тестирования. Кажется, что игнорирует наивысшее число и самое низкое число при отображении результатов. Иногда бывает только правильным. – Larry

1

У вас есть 7 весь код. Сделайте его постоянным, как public static int DaysCount = 7 в классе Tempratures и ссылкой, когда это необходимо (см. Пример ниже).

class Temperatures 
{ 
    public static int DaysCount = 7; 
} 

Вы можете использовать его как это:

static void Main(string[] args) 
    { 
     double[] week = new double[Temperatures.DaysCount];  
    } 

Я не могу видеть, где вы бежите функции Определить ...(), så значения никогда не вычисляются.

В функциях Определяют ...() вы должны установить значение соответствующего начального значения перед запуском цикла, как в:

public double DetermineHighest() 
{ 
    highest = -273 // degrees 

    for (int x = 0; x < DaysCount; x++) //Traverse through the week's temperatures 
    { 
    if (weeksTemperatures[x] > highest) //find the highest temperature of the week 
    { 
     highest = weeksTemperatures[x]; //and set it to highest 
    } 
    } 
    return highest; 
} 
+0

Спасибо за ввод, я отредактирую и посмотрю, смогу ли я работать лучше – Larry

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