Avatar billede themepark Nybegynder
28. april 2005 - 00:49 Der er 27 kommentarer og
1 løsning

Initialisering af arrays

Hvis man laver et array af typen String, bliver de som standard sat til null. Kan man ikke på en eller anden måde angive, at de skal sættes til den tomme streng i stedet for?

Jeg har prøvet at skrive

Variabel="";
String[] Variabel = new String[]

Men det virker ikke :(
Avatar billede snoop_one Nybegynder
28. april 2005 - 01:01 #1
String[] variable = new String[] {"","",""};
opretter et string array på 3 dvs. variable.lenght er 3
Avatar billede snoop_one Nybegynder
28. april 2005 - 01:08 #2
desuden skal du huske at angive størrelsen af arrayet når det bliver oprettet, f.eks:
String[] variable = new String[10]; //opret string array af størrelse 10
Avatar billede themepark Nybegynder
28. april 2005 - 01:09 #3
Ja, men nu kan jeg i princippet jo skulle lave et enormt array, så ville det jo blive uoverskueligt.
Avatar billede themepark Nybegynder
28. april 2005 - 01:18 #4
Ja, okay, den havde jeg glemt, men det har jeg selvfølgelig med i min kode, det der var bare noget, jeg hurtigt skriblede ned :)
Avatar billede kalp Novice
28. april 2005 - 02:30 #5
String[] Variabel = new String[50];

for(int i = 0; i < Variabel.Size; i++)
{
Variabel[i] = "";
}

sådan kan du også gøre det.

kan godt være metoden her Variabel.Size hedder Variabel.Size()
kan jeg ikke lige huske. heller ikke om det skal skrives med småt eller stor hehe
Avatar billede themepark Nybegynder
28. april 2005 - 02:51 #6
Ja, det er desværre allerede sådan jeg gør det, med en for løkke, og det var det jeg håbede på at undgå :(
Avatar billede kalp Novice
28. april 2005 - 02:57 #7
Jeg ved ikke hvad du skal bruge det til, men ellers kan du når du skal bruge felterne gøre dette

if(Variabel[X] == null)
Variabel[X] = "";
else
Din kode ellers.

men ved som sagt ikke hvad formålet er:)
Avatar billede themepark Nybegynder
28. april 2005 - 03:04 #8
Formålet er bare, at jeg bruger += til at adde ting til mit array, og hvis jeg ikke angiver det til at være den tomme streng, vil det komme til at starte med strengen null
Avatar billede kalp Novice
28. april 2005 - 03:06 #9
okay så kunne du faktisk godt bruge det tjek som jeg viser før :) den ser jo lige om den er null først.. så der skal lige tilføjes noget til den ud fra det du siger

if(Variabel[X] == null)
{
Variabel[X] = "";
//nu kan du bruge din kode
altså +=
}
else
Din kode ellers.
altså +=
Avatar billede themepark Nybegynder
28. april 2005 - 04:30 #10
Hmm...det jeg er ude efter, er nu mere, om man ikke på en måde kan undgå at strengene bliver initialiseret til at være null, men i stedet for til at være "", altså at den på intet tidspunkt er null.
Avatar billede arne_v Ekspert
28. april 2005 - 07:40 #11
Det er:

String[] Variabel = new String[50];

for(int i = 0; i < Variabel.length; i++)
{
Variabel[i] = "";
}

eller for purister:

String[] variabel = new String[50];

for(int i = 0; i < variabel.length; i++)
{
    variabel[i] = "";
}
Avatar billede arne_v Ekspert
28. april 2005 - 07:45 #12
Og der er ingen måde hvorpå du kan det du du efterlyser.

X[] v = new X[50];

allokerer 50 referencer.

Og de kommer først til at pege på noget ved:

v[i] = new X();

Sådan er det for alle klasser inklusive java.lang.String;
Avatar billede stephanryer Nybegynder
28. april 2005 - 18:12 #13
Well hvad er det du skal bruge det til? Måske wille en ArrayList være mere hensigtsmæssig?

Den kunne du bruge således:

Arraylist<String> mineStrenge = new Arraylist<String>();
mineStrenge.add("ord1");
mineStrenge.add("ord2");
mineStrenge.add("ord3");

og fx hive ud således:
String minStreng = mineStrenge.get(2)
Avatar billede themepark Nybegynder
30. april 2005 - 16:29 #14
Tja, jeg skal bare bruge det i forbindelse med at jeg på et tidspunkt kører en løkke, der bruger += til at tilføje noget til hver enkelt streng i mit array. Første gang, den løkke køres, er alle arrays jo lig null, og når jeg så føjer noget til, bliver null lavet om til en streng. F.eks. hvis jeg tilføjer A, bliver strengen "nullA" i stedet for bare "A".

Jeg synes for løkken, som jeg bruger nu, til at køre hele arrayet igennem, og sætte det hele til den tomme streng "", er lidt unødvendig i min kode, og det er derfor jeg gerne vil gøre det på en anden m måde, hvis muligt, men altså inden jeg kører min løkke, hvor jeg bruger +=

Det skal selvfølgelig siges, at jeg ikke er 100 % modstander af at bruge den for-løkke, hvis det er den eneste måde at gøre det på, som det jo ser ud til, jamen, så gør jeg det bare sådan :)
Avatar billede kalp Novice
30. april 2005 - 16:31 #15
themepark >>

Derfor skal du være smart:) lav en metode hvis eneste formål er at give ændre alle elementer i din array fra null til ""

altså istedet for at have en løkke midt i din kode..
Avatar billede kalp Novice
30. april 2005 - 16:32 #16
arraylist..
Avatar billede arne_v Ekspert
30. april 2005 - 16:32 #17
Jeg ville uden at ryste på hånden vælge en initialiserings for løkke hver gang.

Alternativet må være:

v[i] = (v[i] != null ? v[i] : "") + "A";
Avatar billede kalp Novice
30. april 2005 - 16:33 #18
dinarray = dinmetode.nyevaerdier(dinarray);

så kan du lige kalde den sådan der hurtigt før du arbejder med løkken.. ser da pænt ud:))
Avatar billede stephanryer Nybegynder
30. april 2005 - 16:33 #19
Hvorfor er det du vil bruge arrays? ET arraylist er tomt fra starten.

Arraylist<String> mineStrenge = new Arraylist<String>();
mineStrenge.add("ord1");
mineStrenge.add("ord2");
mineStrenge.add("ord3");

Når du skal gennemløbe det kan du blot skrive:

String samling = "";
for(String s : mineStrenge){
samling += s + " ";
}
Avatar billede stephanryer Nybegynder
30. april 2005 - 16:35 #20
og de behøver ikke gennemløbe fra starten.
Avatar billede themepark Nybegynder
30. april 2005 - 16:50 #21
Helt ærligt, jeg har aldrig hørt om array lists...jeg er mere eller mindre autodidakt omkring det jeg ved om Java ;) Damn, I er hurtige, giv mig lige tid til at kigge på det *g*
Avatar billede themepark Nybegynder
30. april 2005 - 17:17 #22
kalp, ville den metode så ikke bare også skulle benytte sig af en for løkke stadigvæk? Så ville jeg jo bare få mere kode?
Avatar billede themepark Nybegynder
30. april 2005 - 17:21 #23
Umiddelbart kan jeg ikke se at arraylists skulle være bedre, de initialiseres jo også til null, ligesom arrays.
Avatar billede arne_v Ekspert
30. april 2005 - 17:24 #24
en ArrayList initialiseres med ingen elementer (hele pointen ved en ArrayList
er at elementer tilføjes dynamisk)

jeg mener ikke at man kan sige at alle elementer er null når der ingen elementer er

men jeg tror nu heller ikke at ArrayList (som er en meget anvendt data strutktur som
enhver Java programmør bør kende) løser lige netop dit problem
Avatar billede themepark Nybegynder
30. april 2005 - 17:32 #25
Jeg har nu aldrig sagt, jeg var Java ekspert, jeg er netop autodidakt ;) Well, som standard initialiseres den med et vist antal element, vist 10, når man bare bruger ArrayList(), og det var ud fra det, at jeg kunne se det :)
Avatar billede themepark Nybegynder
30. april 2005 - 17:42 #26
Hmm...jeg tror, nu efter at have kigget lidt på det, at jeg egentlig vælger en anden vinkel på det. Så smid et svar, arne_v :)
Avatar billede arne_v Ekspert
30. april 2005 - 17:44 #27
ok
Avatar billede kalp Novice
30. april 2005 - 22:59 #28
Kommentar: themepark
30/04-2005 17:17:55

Jo det skal du, men så er løkken placeret et andet sted i din kode.. evt i en helt anden klasse hvis du slet ikke gider se på den.

men hvis du ikke kan se fidusen i det så bare lad det ligge:) kan se du har fundet en anden løsning.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester