WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 29.03.2002, 13:44   #1
3of4
Elite
 
Registriert seit: 14.11.1999
Alter: 39
Beiträge: 1.429


Standard Integer.parseInt und andere Probleme

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 ...
____________________________________
Resistantium est futilius
3of4 ist offline   Mit Zitat antworten
Alt 29.03.2002, 13:45   #2
3of4
Elite
 
Registriert seit: 14.11.1999
Alter: 39
Beiträge: 1.429


Standard

ooops Datei vergessen
____________________________________
Resistantium est futilius
3of4 ist offline   Mit Zitat antworten
Alt 30.03.2002, 14:53   #3
3of4
Elite
 
Registriert seit: 14.11.1999
Alter: 39
Beiträge: 1.429


Standard

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);
}
}
____________________________________
Resistantium est futilius
3of4 ist offline   Mit Zitat antworten
Alt 07.04.2002, 00:27   #4
netandi
Newbie
 
Registriert seit: 01.02.2001
Ort: Südl. NÖ
Alter: 48
Beiträge: 6

Mein Computer

netandi eine Nachricht über ICQ schicken
Standard java.util.Vector

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.
netandi ist offline   Mit Zitat antworten
Alt 07.04.2002, 00:53   #5
3of4
Elite
 
Registriert seit: 14.11.1999
Alter: 39
Beiträge: 1.429


Standard

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;
}

}
____________________________________
Resistantium est futilius
3of4 ist offline   Mit Zitat antworten
Alt 07.04.2002, 12:10   #6
Tarjan
Quantensingularität
 
Registriert seit: 28.09.2000
Alter: 55
Beiträge: 8.336


Tarjan eine Nachricht über ICQ schicken
Standard

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!
Tarjan ist offline   Mit Zitat antworten
Alt 07.04.2002, 18:11   #7
3of4
Elite
 
Registriert seit: 14.11.1999
Alter: 39
Beiträge: 1.429


Standard

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.
**/
____________________________________
Resistantium est futilius
3of4 ist offline   Mit Zitat antworten
Alt 07.04.2002, 19:07   #8
Tarjan
Quantensingularität
 
Registriert seit: 28.09.2000
Alter: 55
Beiträge: 8.336


Tarjan eine Nachricht über ICQ schicken
Standard

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!
Tarjan ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:45 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag