webForumDet fria alternativet

Arrays...

5 svar · 486 visningar · startad av LilleSkutt

LilleSkuttMedlem sedan feb. 2001265 inlägg
#1

Halloj, jag har lite småproblem och behöver en liten knuff i ryggen :)

När jag tar bort ett värde i en array (ersätter eg med ett blanksteg) finns ju den platsen kvar, den räknas som upptagen. Hur gör jag om jag vill skyffla denna lilla irriterande tomma plats längst bak i arrayen, så att det inte blir ett 'hål'?
Och finns det någon innbyggd funktion eller metod som sorterar en array? Jag har gjort en själv, men den är inte fullt fungerande än...

Ge mej gärna en liten knuff nu, detta borde inte vara så svårt för Javagurus ;)

------------------
---
/* LilleSkutt */

sgtpepperMedlem sedan apr. 20007 588 inlägg
#2

Ofta kan det vara att föredra att använda Vector-klassen istället för arrays. Tänk också på att det är prestandakrävande att ta bort element i en array beroende på positionen eftersom alla element efter den borttagna måste flyttas så det lämpar sig inte för stora arrayer.

Här är ett exempel som jag slängt ihop "on-the-fly" så enligt Murphys lagar lär det inte fungera direkt :)

  for (int j=0; j < src.length; j++)
  {
    if (j > n)
      src[j-1] = src[j];   
  }
  src[src.length-1] = null;

  --------
  n = positionen som skall tas bort.
  src = arrayen som skall behandlas.

För att sortera arrayer så kan du använda klassen java.util.Arrays, där finner du metoder för att manipulera arrayer på olika sätt, bl.a sortering.

------------------
"Med ett schysst järnrör slår man hela världen med häpnad" - Socker-Conny

[Redigerat av sgtpepper den 09 mar 2001]

LilleSkuttMedlem sedan feb. 2001265 inlägg
#3

Okey, tack, men jag hade redan löst det... :)

Nu ett nytt problem:
Hur anropar man icke statiska metoder från en statisk metod? Jag vet att det inte går rakt på, men det borde väl gå att komma runt???

------------------
---
/* LilleSkutt */

spangoMedlem sedan juni 20008 205 inlägg
#4

Egentligen är ArrayList att föredra framför Vector, eftersom Vector har en massa synkronisering som i vissa fall (eller snarare, "ofta") är onödig.

Hur anropar man icke statiska metoder från en statisk metod? Jag vet att det inte går rakt på, men det borde väl gå att komma runt???

Nej. Gör metoden du vill anropa statisk, eller skapa en ny instans av klassen med metoden du vill anropa.

------------------
Tror du på ett liv efter födseln?

LilleSkuttMedlem sedan feb. 2001265 inlägg
#5

Halloj,

jag hängde inte riktigt med dig där spango... Min kod ser ut så här:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
import java.awt.*;
import java.awt.event.*;

public class OppnaFonster extends Frame
{

TextField txtField;

public OppnaFonster()
{
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose();
System.exit(0);
}
});
}

public static void main(String[] args)
{
System.out.println("Starting...");
OppnaFonster mainFrame = new OppnaFonster();
mainFrame.setSize(600, 600);
mainFrame.setTitle("Testar Java-fönster!");
mainFrame.setVisible(true);

txtField = new TextField();
//txtField.setEditable(false);
//setLayout(new GridLayout(1, 0));
//add(txtField);
//validate();

txtField.setText("LilleSkutt testar sina Java-kunskaper...");
}
}

De rader med comments anropar icke statiska metoder... Men själva programmet kommer ju inte funka om man bara gör om main-metoden till icke statisk.

:q

------------------
---
/* LilleSkutt */

spangoMedlem sedan juni 20008 205 inlägg
#6

OK. Felet är att txtField ska tillhöra en instans av OppnaFonster, men du anropar den statiskt, dvs inte från någon instans. Följande kod borde ligga i konstruktorn i stället:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
txtField = new TextField();
txtField.setEditable(false);
setLayout(new GridLayout(1, 0));
add(txtField);
validate();
txtField.setText("LilleSkutt testar sina Java-kunskaper...");

... eftersom konstruktorn inte är statisk. (== man jobbar inom ett objekt i den)

------------------
Tror du på ett liv efter födseln?

136 ms totalt · 3 externa anrop · v20260731065814-full.91fd2ad2
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)