2016-04-21 55 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

看起来像entreesentreeMealCaloricVal包含12项。这意味着它们将从0到11索引。

使用random.Next(0,13)将生成一个从0到12的数字。当您尝试访问索引为12的数组时,将抛出异常。

+0

他不仅仅是这个。当日期是7的倍数时,他还试图在GetDay函数中调用daysOfWeek [-1]。 – ohiodoug

+0

良好的调用,该方法不在他发布的原始代码中。 – Jonesopolis

+0

我要求在计数数组中的项目之前在评论中看到它。在我有机会之前,你已经回答了主要的罪魁祸首。 =) – ohiodoug