brug af for-løkke og collections.ArrayList ?
Hej Eksperter!Jeg er helt ny til C#, men har valgt at kaste mig direkte ud i et lille selvvalgt programmeringsprojekt for at få lidt mere viden om sproget. Det er så her jeg er stødt ind i det her problem. Min kode ser ud som følgende:
using System;
using System.Collections;
namespace rainbowsimple
{
public class Room
{
//private felter
private int _roomid;
private int _nwall;
private int _swall;
private int _ewall;
private int _wwall;
//indkapsling
public int roomid
{
get { return _roomid; }
}
public int nwall
{
get { return _nwall; }
}
public int swall
{
get { return _swall; }
}
public int ewall
{
get { return _ewall; }
}
public int wwall
{
get { return _wwall; }
}
//constructor for room-klassen
public Room(int idofroom, int roominnwall, int roominswall, int roominewall, int roominwwall)
{
_roomid = idofroom;
_nwall = roominnwall;
_swall = roominswall;
_ewall = roominewall;
_wwall = roominwwall;
}
}
public class Building
{
//private felter
private int _rooms;
private ArrayList _Allrooms;
//indkapsling
public int rooms
{
get { return _rooms; }
}
public Building(int nrofrooms)
{
_rooms = nrofrooms;
for (int i=1; i<=_rooms; i++)
{
_Allrooms = new ArrayList();
_Allrooms.Add(new Room(i, 0, 0, 2, 10));
Room myRoom = (Room)_Allrooms[i];
Console.WriteLine(Convert.ToString(myRoom.roomid));
//Console.Write("Her tælles der {0} ", _Allrooms.Count);
}
}
}
public class MainClass
{
//private int _nrofrooms;
public static void Main(string[] args)
{
//henter input fra bruger til feltet _rooms
Console.Write("Hvor mange rum ønskes der i bygningen? : ");
string _input = Console.ReadLine();
int _nrofrooms = System.Int32.Parse(_input);
Building Førstebygning = new Building(_nrofrooms);
Console.WriteLine("Der oprettes {0} rum i bygningen", Førstebygning.rooms);
}
}
}
I koden har jeg 2 klasser, henholdsvis en rum-klasse og en bygnings-klasse. Når jeg så vil lave et obejkt udfra bygnings klassen skal den fremstille en række obejkter af rum-klassen vha. en for-løkke og placere dem i et Array.. Ved kompiling af koden opstår der ingen fejl eller advarelser, men når jeg så forsøger at kører applikationen kan jeg godt skrive ind hvor mange obejcter jeg vil have den til at lave af rum-klassen, men når jeg trykker enter, kommer følgende fejlmeddelse i en winbox:
Application has generated an exception that could not be handled.
Og i console står der så følgende:
Hvor mange rum onskes der i bygningen? : 9
Unhandled Exception: System.ArgumentOutOfRangeException: Index was out of range.
Must be non-negative and less than the size of the collection.
Parameter name: index
at System.Collections.ArrayList.get_Item(Int32 index)
at rainbowsimple.Building..ctor(Int32 nrofrooms) in d:\Documents\c-sharp\stra
tegi spil\rainbowsimple\Main.cs:line 84
at rainbowsimple.MainClass.Main(String[] args) in d:\Documents\c-sharp\strate
gi spil\rainbowsimple\Main.cs:line 102
Press any key to continue . . .
Endvidere hvis jeg prøver at lave en Count på mit ArrayList, finder den kun et obejct i Listen, hvilket jo ikke skulle passe...
Hvordan kan jeg få det til at kører som jeg vil have det? Har I nogen forslag? Kommentarer til selve koden er også meget velkommen, da jeg jo er ny i sproget og gerne vil blive bedre til at strukturer m.m.
