2017-03-20 5 views
-3

Ich mache ein Projekt auf InsertionSort und ich habe dieses Projekt ausgepeitscht, ohne vorherige Erfahrung in Array-Listen Ich erhalte einen Fehler bezüglich der Überprüfung der Werte in einem bestimmten Index.Überprüfen von Werten in einer Array-Liste

int unsorted[] = {10, 4, 52, 5, 7}; 
    ArrayList sorted = new ArrayList<Integer>(); 

    sorted.add(unsorted[0]); 

    for (int i=1; i <= unsorted.length; i++){ 
     int x=0; 
     while (unsorted[i] > sorted(x)){ 
      x++; 
      if (unsorted[i]<= sorted(x)){ 
       sorted.set(x,unsorted[i]); 
      if (x > sorted.size()){ 
       sorted.add(unsorted[i]); 

Ich erhalte Fehler auf beide sorted(x) im Beispiel kann mir jemand sagen, wie ein Wert innerhalb einer Array-Liste zu einem bestimmten Index zu überprüfen?

+3

behoben Der erste Ort, den Sie suchen sollten, ist in der offiziellen 'ArrayList' Dokumentation. https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html –

+3

"Ich bekomme einen Fehler" welcher Fehler ???? –

+0

Ich denke 'unsortiert [1]' ist ein Tippfehler. – shmosel

Antwort

0

Sie sind für sorted.get(index)

+0

Ich versuchte das, aber es führte nur zu einem größeren Fehler @ Janus Varmarken –

+0

'unsortiert' ist ein Array. Vielleicht meinst du "sorted.get (x)"? – shmosel

+0

Richtig, es sieht so aus, aber es ist nicht offensichtlich, da die Definition von unsortiert nicht da ist. OP könnte genauso gut von einer Sprache kommen, die eine tiefgestellte Syntax hat, z. schnell. Ich verstehe nicht, warum das abgelehnt wurde ... –

0

Compilations Fehler suchen, sollten unter Verwendung der richtigen Methode vermieden werden, um ein Element zu erhalten von einem List (und eine Arraylist von Folge): get().

Arrays und ArrayList haben beide Indizes von 0 beginnend, nicht 1. Sie sollten eine Fehlermeldung erhalten, wenn der Index auf die Länge Ihres Arrays oder ArrayList gleich so unsorted[unsorted.length] sollte einen Fehler auslösen.

IMHO Ihre erste Schleife

for (int i=1; i < unsorted.length; i++){ 

Hinweis sollte auch, dass Sie die add() Methode anstelle der set um Elemente einzufügen nutzen könnten.

+0

unsortiert ist ein Array, sortiert ist eine Array-Liste –

+0

und ich bereits unsorted 0 in die Array-Liste vor Hand hinzugefügt –

+0

oops Entschuldigung für meine Bemerkung, antwortete ich zu schnell ... aber ich denke, Sie sollten das Indexproblem auftreten. –

1

Erste das Element eines List über die get() Methode durchgeführt wird, können Sie dies in der offiziellen Java Doc nachschlagen, die bereits verknüpft @BilltheLizard:

https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html

ein Element Einstellung erfolgt mit die set() Methode, die Sie bereits getan haben.

Grundsätzlich hat ein Objekt immer Methoden, es zu manipulieren.

+0

danke, ich habe versucht und habe einen Fehler, aber vielleicht war ich nicht richtig, ich werde den Link –

1

Wenn Sie nach Einfügesortierung sortieren möchten, können Sie diesen Code versuchen.

int unsorted[]={1,5,2,7,3}; 
    for (int i = 1; i < unsorted.length; i++) { 
     int key=unsorted[i]; 
     int j=i-1; 
     while((j > -1) && (unsorted [j] > key)){ 
      unsorted [j+1] = unsorted [j]; 
      j--; 
     } 
     unsorted[j+1]=key; 

    } 

    for (int x = 0; x < unsorted.length; x++) { 
     System.out.print(unsorted[x] + ", "); 
    } 
    System.out.println("\n"); 
+0

danke für dieses Beispiel Mann! –

0

Vielen Dank für Ihre Vorschläge! Die Mehrheit von Ihnen hat vorgeschlagen, dass ich .get verwende, aber ich habe einen Fehler bei der Verwendung bekommen. Es stellte sich heraus, dass ich den Typ nicht definiert hatte, den die ArrayList enthalten würde, daher konnte ich .get nicht verwenden. Ich habe dies durch Hinzufügen ArrayList<Integer> sorted = new ArrayList<Integer>(); und if (unsorted[i]<= sorted.get(x)){

Verwandte Themen