Archief - [PROG]JAVA: van int naar arrayadress

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

maxdevis

Legacy Member
stel je hebt een raster/2-dimensionele array van 5 op 5
de gebruiker geeft een nummer in bv 12
dat is dan array[3][2] als ik me niet vergis.

hoe maak nu het gemakkelijkst van die int dat array-adress?

ik heb nu
public int maakArrayAdresVerticaal(int nummer)
{
if(nummer == 1||nummer==4||nummer==7)
{return 0;}
if(nummer == 2||nummer==5||nummer==8)
{return 1;}
if(nummer == 3||nummer==6||nummer==9)
{return 2;}
else
{return 0;}
}
public int maakArrayAdresHorizontaal(int nummer)
{
if(nummer == 1||nummer==2||nummer==3)
{return 0;}
if(nummer == 4||nummer==5||nummer==6)
{return 1;}
if(nummer == 7||nummer==8||nummer==9)
{return 2;}
else
{return 0;}
}

maar dan moet je steeds classe.array[maakArrayAdresHorizontaal][maakArrayAdresVerticaal] schrijven.
Bestaat er niet een classe zoals bv ArrayAddress?

ik wil gewoon ergens die int kunnen insteken en er een arrayddress van terugkrijgen.
gaat dat?

Quadreg

Legacy Member
het kan net iets simpeler :)

hier een klein stukje voorbeelcode:
PHP:
public class ArrayIndex{
    public static void main(String argv[]){
        if ( argv.length == 0 )
            return;

        int index = Integer.parseInt( argv[0] );

        int array[][] = { { 0,1,2,3,4},
                          { 5,6,7,8,9},
                          { 10,11,12,13,14},
                          { 15,16,17,18,19},
                          { 20,21,22,23,24}};

        System.out.println( array[ index / array.length ][ index % array.length ] );
    }
}

het 'verticale adres' krijgen we door index/array.length.
het 'horizontale adres' is de rest na die deling, dus index%array.length

stel voor uw voorbeeld "12"
12/5 --> 2
12%5 --> 2

en "12" staat inderdaad ook in rij 2 in de 2de kolom. (als we vanaf 0 tellen toch :) )
Enfin, 'k denk toch dat het dit is wat je wou :)

maxdevis

Legacy Member
hmmmm
interessant.
maar nu steek ik daar een int in en verschijnt er een string op mijn scherm.
niet?

ik zou er een arrayadres moeten kunnen uithalen.


stel dat je raster uit booleans bestaat, dan zou ik liefst een methode hebben als volgt

public void setRasterwaarde(arrayadres)
{
arrayadres = true;
}

Quadreg

Legacy Member
welja, nu kan je gewoon doen:

PHP:
public void setRasterwaarde(int index)
{
array[ index / array.length ][ index % array.length ] = true;
}

dus op basis van die index bereken je de positie in de functie.

het eche "arrayadres", dus een pointer naar een stuk gegeugen,
kun je hier (in java) niet gebruiken (ofwel vertel ik hier nu complete nonsens :))

MilM

Legacy Member
Let er gewoon op, als je telt vanaf 1 tot en met 25 ipv 0 tot en met 24, dat je bij uwe index 1 aftrekt.

Dus als iemand een 8 ingeeft, dat je daar 8-1 van maakt.

Anders krijg je een heleboel zaken waar je rekening mee moet houden.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan