Slettet bruger
09. august 2006 - 18:32
Der er
5 kommentarer og
1 løsning
MultiArray Problem
Har tidl. fået hjælp til at lave dette Multi dimentionelle arraylist.. har udbygget det og det virker helt fint. Men kan ikke få en IndexOf funktion til at fungere, håber nogen kan hjælpe..
class MultiArray
{
ArrayList[] ArrayX = null;
public MultiArray(uint dim)
{
ArrayX = new ArrayList[dim];
for (int idx = 0; idx < ArrayX.Length; idx++)
ArrayX[idx] = new ArrayList();
}
public void Add(params Object[] arg)
{
for (int idx = 0; idx < arg.Length; idx++)
{
if (idx >= ArrayX.Length) break;
ArrayX[idx].Add(arg[idx]);
}
}
Denne virker ikke, kan ikke HELT se logikken i det :)
public int IndexOf(Object Item, int Column)
{
return ArrayX[Column].IndexOf(Item);
}
Den skal lede i den angivne column efter det object man giver den, og så skal den returne index af den item
09. august 2006 - 21:39
#2
Teknisk set så burde den virke som Nielle siger, men hvis du leder efter Obj X i Col 1 men Obj X ligger i Col 3, og då dermed forventer et index, så får du ikke noget...
Dette kan løses med en metode der Leder det hele igennem og retuenere både Row og Col...
public void IndexOf(object item, out int column, out int row)
{
int col = -1, row = -1;
for(int i = 0; i < ArrayX.Length; i++)
{
if( ArrayX[i].Contains(item) )
col = i; row = ArrayX[i].IndexOf(item);
}
}
Metoden kan så benøttes:
public static void Main()
{
MultiArray ma = new MultiArray(3);
ma.Add(new char[]{'a','b','c'});
ma.Add(new char[]{'d','h','g'});
ma.Add(new char[]{'e','f','i'});
int c = 0, r = 0;
Console.Writeline(" Searching Multiarray for x ")
ma.IndexOf('x',c,r);
Console.Writeline(" First found at ({0},{1}), (if -1 none whas found)",c,r);
Console.Writeline() // skulle give -1,-1 (eksisterede ikke)
Console.Writeline(" Searching Multiarray for f ")
ma.IndexOf('f',c,r);
Console.Writeline(" First found at ({0},{1}), (if -1 none whas found)",c,r);
Console.Writeline() // skulle give 2,1 (eksisterede)
}
Slettet bruger
09. august 2006 - 21:43
#3
Hvis det virker når jeg tjekker det i morgen, er du min gud! :D
Kort sagt, tak for hjælpen
10. august 2006 - 18:29
#6
Der mangler ellers lige lidt på den... den if der snød mig lige i farten grundet jeg lavede en fyy ting... :P
public void IndexOf(object item, out int column, out int row)
{
int col = -1, row = -1;
for(int i = 0; i < ArrayX.Length; i++)
{
if( ArrayX[i].Contains(item) )
{
col = i; row = ArrayX[i].IndexOf(item);
return; // <- Alt efter om du vil have den til at returnere for den første eller sidste forekomst, smider du en return her... (Med return bliver det første forekoms, uden return den sidste...
}
}
}