2015-10-07 1 views
1

Так что в основном этот код спрашивал, сколько элементов я хочу создать, но после этого просто продолжайте работать без ответа. И просто ест баран.Код хранит память

Что я хочу, это задать количество элементов для создания, а затем указать его имя и его статистику.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace TestingRNG 
{ 
class Program 
{ 
    public static Random Random = new Random(); 
    public static int dropRate, itemAmmount; 
    public static List<Items> Loot = new List<Items>(); 
    public static List<string> WeaponList = new List<string> { "Staff", "Sword", "Dagger", "Wand", "Axe", "Mace" }; 
    static void Main(string[] args) 
    { 
     Programs(); 
    } 
    public static void Programs() 
    { 
     Console.WriteLine("How many items do you want to generate"); 
     itemAmmount = Int32.Parse(Console.ReadLine()); 

     for (int i = 0; 0 < itemAmmount; i++) 
     { 
      dropRate = Random.Next(1, 6); 
      Loot.Add(new Items(dropRate)); 
     } 
     foreach (var Item in Loot) 
     { 
      Console.WriteLine(Item.Name); 
      if (WeaponList.Contains(Item.ItemType)) 
      { 
       Console.WriteLine(Item.Damage); 
      } 
      else 
      { 
       Console.WriteLine(Item.HP); 
       Console.WriteLine(Item.MANA); 
      } 
      Console.ReadLine(); 

     } 
    } 
} 

}

+0

'для (INT I = 0; 0 'для (INT I = 0; я < itemAmmount; i ++) ' –

ответ

5
for (int i = 0; 0 < itemAmmount; i++) 

Вы не проверять счетчик цикла, вы сравниваете 0 с itemAmount. Это бесконечный цикл.

Попробуйте вместо for (int i = 0; i < itemAmmount; i++).

Вы можете использовать фрагменты кода в Visual Studio, чтобы избежать таких ошибок. Тип «для» и нажмите Tab дважды, и фрагмент кода для for цикла будет вставлена ​​с возможностью переименования i и length:

for (int i = 0; i < length; i++) 
{ 

} 
2
for (int i = 0; 0 < itemAmmount; i++) 
{ 
    dropRate = Random.Next(1, 6); 
    Loot.Add(new Items(dropRate)); 
} 

вы установили itemAmmount, и никогда не изменять его. Единственный выход вашей петли - если itemAmmount уменьшен (до 0).

Исправьте for петлю, так что он имеет логический смысл:

for(int i=0; i<itemAmmount; i++) 
Смежные вопросы