![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Elite
![]() Registriert seit: 14.11.1999
Alter: 39
Beiträge: 1.429
|
![]() Kann mir jemand sagen wieso bei meinem Programm (dass das mit Startsortin aufgerufen wird), bei dem Einlesen der Zahl der unbedingt ein try catch mit ArrayIndexOutOfBoundsException haben will???
Und wieso wenn ich das so mache, er mir immer bei der Heapsortklasse beim ausgeben (toString()) eine IndexOutOfBoundsException wirft??? Ich will nicht dass das Programm nur aus try Catch besteht ... |
![]() |
![]() |
![]() |
#2 |
Elite
![]() Registriert seit: 14.11.1999
Alter: 39
Beiträge: 1.429
|
![]() ooops Datei vergessen
|
![]() |
![]() |
![]() |
#3 |
Elite
![]() Registriert seit: 14.11.1999
Alter: 39
Beiträge: 1.429
|
![]() hab den Fehler jetzt selbst gefunden, aber ein anderes Problem:
ich lese in der Klasse die Zahlen ein, allerdings weiß ich nicht wieviel Zahlen der User übergibt, und ich hatte nur mit int[] sortFeld deklariert, aber so funzt es nicht... Wie kann ich den Speicher dynamisch anforden, bzw. das Feld bei jedem Aufruf der funktioniert um eins verlängern??? import java.awt.*; public class Startsortin{ public static void main(String[] args){ int[] sortFeld; int i=0; Input in; for(i=0;;i++){ in = new Input(new Frame(),"Heapsort","Bitte Zahl eingeben","OK"); in.setVisible(true); try{ System.out.println(""+Integer.parseInt(in.getResul t())); sortFeld[i]=Integer.parseInt(in.getResult()); } catch(NumberFormatException nfe){ break; } catch(StringIndexOutOfBoundsException sioobe){ System.out.println("bei Exception sioobe\n"); } catch(ArrayIndexOutOfBoundsException aioobe){ System.out.println("bei Exception aioobe\n"); } } System.out.println("Draussen"); System.out.println(""+sortFeld.length); Heapsort hs = new Heapsort(sortFeld); sortFeld = hs.getArray(); System.out.println("hy"+hs.toString()); System.exit(0); } } |
![]() |
![]() |
![]() |
#4 |
Newbie
![]() |
![]() Die Vector-Klasse ist ein Array, das dynamisch mitwächst. Das dürfte dein Problem lösen (wenn ich's richtig kapiert hab).
mfg Netandi
____________________________________
No one know what it\'s like, no one knows how it feels. Nothing else can compare to the fears I fear. |
![]() |
![]() |
![]() |
#5 |
Elite
![]() Registriert seit: 14.11.1999
Alter: 39
Beiträge: 1.429
|
![]() Danke, aber das Problem habe ich inzwischen schon anders gelöst, Stack(Vector) zu verwenden wäre nicht zielführend, da es
a) soetwas meines Wissens nur in Java gibt b) ich die ganze Sortiererei viel einfacher erledigen könnte, und zwar mit st.insertElementat(index); (Weiß nicht ob ich den Befehl noch richtig weiß) Inzwischen habe ich es so gelöst, das ich am Anfang der Schleife immer das jetzige Feld in ein Hilfsfeld speichere, dann für SortFeld ein neues Feld mit einem Element mehr anlege, und in einer zweiten (inneren) forschleife die alten Werte vom Hilfsfeld wieder zurückspeicher. Dann gebe ich in den letzten Index noch die frisch eingelesene Zahl. Das Integer.parseInt am Anfang dient nur dazu um wenn es nicht funzt, gleich in die catch-Anweisung zu hüpfen. int[] sortFeld = new int[0], hsf; int i=0,a; Input in; for(i=0;;i++){ in = new Input(new Frame(),"Heapsort","Bitte Zahl eingeben","OK"); in.setVisible(true); try{ Integer.parseInt(in.getResult()); hsf = sortFeld; sortFeld = new int[sortFeld.length+1]; for(a=0;a<hsf.length;a++){ sortFeld[a]=hsf[a]; } sortFeld[i]=Integer.parseInt(in.getResult()); } catch(NumberFormatException nfe){ break; } } |
![]() |
![]() |
![]() |
#6 |
Quantensingularität
![]() |
![]() Naja das ganze ist ein bischen Performanceschluckend wennst das Array immer wieder anlegst.
PS: In Java gibt es noch die ArrayList, die genau für das geschaffen wurde. Ist ein dynamisches Array. PPS: Wennst den Code einrückst ist er leichter zu lesen.
____________________________________
Was ist klein, grün und dreieckig? Ein kleines grünes Dreieck! Bahnübergänge sind die härtesten Drogen der Welt! Ein Zug und du bist weg! |
![]() |
![]() |
![]() |
#7 |
Elite
![]() Registriert seit: 14.11.1999
Alter: 39
Beiträge: 1.429
|
![]() wie geht das mit einem dynamischen array???
Und ich habe eingerückt, nur will das Forum mehrere Lehrzeichen an Anfang nicht anzeigen. /**Test 5 Lehrzeichen, dann Schrift. . Punkt, 5 Lehrezeichen Schrift. **/ |
![]() |
![]() |
![]() |
#8 |
Quantensingularität
![]() |
![]() Schau dir die Klasse java.util.ArrayList an. Ist Teil des Collection Frameworks in Java.
In einer ArrayList kannst du dynamisch Objekte Speichern (sie erweitert sich selbständig) und per Index ansprechen. Sorry, habe vergessen, dass die Leerzeichen hier entfernt werden.
____________________________________
Was ist klein, grün und dreieckig? Ein kleines grünes Dreieck! Bahnübergänge sind die härtesten Drogen der Welt! Ein Zug und du bist weg! |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|