Katrine Grønhøj <katrine@anarchy.dk> wrote:
> Jeg håber en eller anden kan hjælpe mig med dette problem:
>
> Jeg har et array af integers, hvor jeg gerne vil have slettet
> (fjernet) de steder, hvor værdien er lig 0. Min tanke er så, at
> jeg kan oprette en midlertidigt Vector, hvor jeg indlæser mine
> værdier fra mit array. Jeg sletter så de elementer i Vectoren,
> der har værdien 0, hvorefter jeg fylder mine nye data over i mit
> array.
>
> Kan det overhovedet lade sig gøre, når mit array er af primitive
> datatyper, og en Vector skal indeholde objekter?
>
> Er der nogen, der har en (mere eller mindre) genial løsning?
>
> Mvh
> Katrine
Hej Katrine
Det er lettere (og hurtigere) at gennemløbe arrayet og tælle alle
forekomster af 0 og derefter oprette et nyt array med plads til alle
elementerne undtagen antallet af 0 for til sidst at overføre
elementerne. Nedenstående er et eksempel på, hvordan det kan gøres:
public static void main(String[]args) {
Random rnd = new Random();
int[] fromArray = new int[100];
int[] toArray;
int numZeros = 0;
// Lav et array indeholdende tal mellem 0 og 9
for ( int i = 0; i < fromArray.length; i++ )
fromArray[ i ] = rnd.nextInt() % 10;
// Tæl antallet af 0
for ( int i = 0; i < fromArray.length; i++ )
if ( fromArray[ i ] == 0 )
numZeros++;
// Opret et nyt array med plads til alle elementer
// undtagen dem, der indeholder 0.
toArray = new int[ fromArray.length - numZeros ];
// Overfør alle elementer undtagen dem,
// der indeholder 0
for ( int i = 0, j = 0; i < fromArray.length; i++ )
if ( fromArray[ i ] != 0 )
toArray[ j++ ] = fromArray[ i ];
}
Håber du kan bruge det til noget
--
Mikkel Bundgaard
IT University of Copenhagen
http://officehelp.gone.dk
Codito, Ergo Sum