2016-04-26 13 views
0

Ich erhalte die Ausnahme für das a-Format mit meinem aktuellen Code. Ich bin mir nicht sicher, was genau das Problem ist, aber ich fühle, dass es etwas ganz Kleines ist, also werde ich nicht zu sehr ins Detail gehen, was mein Code "tun soll", aber Sie werden wahrscheinlich in der Lage sein, es trotzdem zu sagen.Probleme bezüglich java.lang.NumberFormatException

Um die Dinge kurz zu halten, soll der folgende Code eine Auswahlsortierung mit einer Reihe von Zufallszahlen verwenden. Ich glaube, das Formatierungsproblem könnte mit dem [] zu tun haben, das die ganzen Zahlen in der Fehlermeldung umgibt, aber ich habe wirklich keine Ahnung. Fehlermeldungen führen zurück zu der Zeile unter der Schaltfläche, die besagt: int array [] = {Integer.parseInt (list.toString())}; Dies ist sinnvoll, weil dies die Deklaration ist, aber ich bin mir nicht sicher, wie Sie dieses Problem verhindern können.

Danke für jede Eingabe und ich entschuldige mich für offensichtliche Fehler, ich bin ziemlich Neuling.

Dies ist der Hauptteil meines aktuellen Code so weit:

ArrayList<Integer> list = new ArrayList<Integer>(); 

public static void selectionSort(int[] a) { 
    for(int i = 0; i < a.length; i++) { 
     int smallestValue = a[i]; 
     int smallestIndex = i; 
     for(int j = i+1; j < a.length; j++) { 
      if (smallestValue > a[j]) { 
       smallestValue = a[j]; 
       smallestIndex = j; 
      } 
     } 
     a[smallestIndex] = a[i]; 
     a[i] = smallestValue; 
} 
} 

public void start() { 
    int times = Integer.parseInt(n2sInput.getText()); 
    for (int i = 0; i < times; i++) { 
     list.add(new Random().nextInt(2000) - 1000); 
    } 
} 

public static String arrayToString(int[] a) { 
    String result = ""; 
    for (int v : a) { 
     result += v + " "; 
    } 
    return result; 
} 

private void sortButtonActionPerformed(java.awt.event.ActionEvent evt) {           

    if(selButton.isSelected()) { 
     start(); 
     int array[] = {Integer.parseInt(list.toString())}; 
     onOutput.setText(arrayToString(array)); 
     selectionSort(array); 
     snOutput.setText(arrayToString(array)); 
    } else if(bubButton.isSelected()) { 

    } else if(insButton.isSelected()) { 

    } else if(quiButton.isSelected()) { 

    } 
} 
+0

Liste ist ein Objekt und Sie können es nicht einfach in eine Zeichenkette konvertieren, Sie müssen die Liste durchlaufen, um jede ganze Zahl zu erhalten, und dann können Sie damit machen, was Sie wollen. – Eymen

+0

'Integer.parseInt (list.toString())' Dies wird versuchen, die gesamte Liste zu einer einzigen Ganzzahl zu analysieren, was der Grund für das Problem sein könnte. Du willst es so (single int)? Oder möchten Sie, dass jedes Element in der 'string'-Liste in Ihrem' int'-Array steht? @ Natecurt3030 –

Antwort

0

Der Fehler tritt hier:

int array[] = {Integer.parseInt(list.toString())}; 

Dies liegt daran, dass Sie eine Liste in einen String konvertieren und dann zu analysieren versuchen es. Eine Liste als String kann nicht zu einem int syntaktisch analysiert werden. Wenn Sie sehen möchten, warum, drucken Sie list.toString().

Wenn Sie Ihre Liste in ein Array konvertieren möchten, tun Sie stattdessen:

Integer[] array = list.toArray(new Integer[0]); 
+0

Das wird sicherlich eine Klassenausnahme Ausnahme geben. Die Liste enthält Boxed Integers, keine primitiven Ints. – dnault

+0

@nault-Messepunkt - bearbeitet – nhouser9

+0

Immer noch nicht gut: '[Ljava.lang.Object; kann nicht in [Ljava.lang.Integer' umgewandelt werden. Um das richtige Array zu erhalten, müssen Sie 'list.toArray (new Integer [0]);' aufrufen – dnault

0

Sie könnten Apache Commons Lang versuchen List<Integer> zu int[] als Gebrüll zu konvertieren:

int array[] = ArrayUtils.toPrimitive(list.toArray(new Integer[0])); 
Verwandte Themen