2016-04-21 4 views
0
public class dailyMenu   
{    

    private string day=""; 
    private int date = 0; 
    private static int nextDate=1; 
    private string entree =""; 
    private double price; 
    private double calories; 

    private static string [] daysOfWeek= {"Monday","Tuesday","Wednesday", 
     "Thursday", "Friday", "Saturday", "Sunday"}; 

    private static string[] entrees = {"Beef Tenderloin Fresco", 
     "Madagascar Filet Mignon", "Filet Mignon", " Lobster Ravioli", 
     "Asian Infused Braised Beef", "New Age Chicken Cordon Bleu", 
     "Short Ribs", " Beef Wellington","Fajitas", "Bacon Cheeseburger", 
     "Beef Burgandy", "Spagehetti"}; 

    private static double [] entreePrices= { 5.99,7.99,6.99,4.50,9.99,10.29, 
     5.67,8.99, 3.99,4.78,10,79,6.98}; 

    private static int[] entreeMealCaloricVal= { 999,1288,770,699,450,999,1500,873, 911, 
     1011, 777,500}; 

    public dailyMenu() 
    { 
     assignDate(); 
     GetDay(); 
     RandPopulate(); 
    } 

    void assignDate() 
    { 
     date = nextDate; 
     nextDate++; 

     if (GetDay()== "Friday") 
     { 
      nextDate += 2; 
     } 
    } 

    void RandPopulate() 
    { 
     Random random = new Random(); 
     int randomNumber = random.Next(0,13); 

     entree = entrees [randomNumber]; 
     price = entreePrices [randomNumber]; 
     calories = entreeMealCaloricVal [randomNumber]; 
    } 
} 

IDE сообщает мне, что строки 56, 41 и 14 могут быть проблемой, поэтому я предполагаю, что это имеет какое-то отношение к моему генератору случайных чисел.Индекс был за пределами границ ошибки массива

Может кто-нибудь дать мне руку?

+0

Как выглядит ваша функция 'GetDay()'? – ohiodoug

+0

строка GetDay() \t \t \t { \t \t \t \t возвращение daysOfWeek [(дата% 7) - 1]; \t \t \t} –

+0

Измените его на: 'string GetDay() {return daysOfWeek [(date% 7)]; } ' – ohiodoug

ответ

2

выглядит как entrees и entreeMealCaloricVal содержит 12 единиц. Это означает, что они будут индексироваться от 0 до 11.

Использование random.Next(0,13) будет генерировать число от 0 до 12. Когда вы попытаетесь получить доступ к этим массивам с индексом 12, ваше исключение будет выбрано.

+0

У него больше, чем просто это. Он также пытался вызвать daysOfWeek [-1] в функции GetDay, когда дата была кратной 7. – ohiodoug

+0

Хороший вызов, этот метод не был в исходном коде, который он опубликовал. – Jonesopolis

+0

Я просил увидеть его в комментариях перед подсчетом элементов в массивах. Вы уже ответили главному преступнику, прежде чем у меня появился шанс. =) – ohiodoug

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