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 02.01.2004, 21:52   #21
poison
Jr. Member
 
Registriert seit: 01.04.2001
Alter: 41
Beiträge: 59


Standard

@tarjan

ich benütze netbeans

jetzt gibt er wieder etwas aus nur das problem ist dabei, dass er wenn ich z.b. (3,4) eingebe er mir folgendes ausgibt
3.0
34.0

danke auf jeden fall für deine hilfe bisher!

mfg poison
poison ist offline   Mit Zitat antworten
Alt 02.01.2004, 22:00   #22
Tarjan
Quantensingularität
 
Registriert seit: 28.09.2000
Alter: 55
Beiträge: 8.336


Tarjan eine Nachricht über ICQ schicken
Standard

hmm, seltsam, ich habe deine lesemethode jetzt nachgebildet, und bei mir kommt der 1 nicht vor. schon mal das programm debugt? ich fragte eben wegen der möglichkeit des debuggens, da sehe ich meist solche fehler wie zb. das mit dem stringbuffer.
____________________________________
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 03.01.2004, 19:52   #23
poison
Jr. Member
 
Registriert seit: 01.04.2001
Alter: 41
Beiträge: 59


Standard

ok ich habe mich jetzt ein wenig gespielt mit dem ganzen und jetzt funktioniert auch das einlesen eines koordinatenpaares -> nur bei mehreren gibt es probleme

wenn ich z.b. eingebe (3,4) (4,5)= gibt er folgende fehlermeldung aus:
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1444)
at Konvneck.einlesen(Konvneck.java:31)
at Konvneck.main(Konvneck.java:15)
Exception in thread "main"

das erscheint für mich auch klar weil ein substring ja bei einem leerzeichen endet -> nur wie kann ich dem jetzt entgegen wirken?

außerdem wie kann ich die ganzen gewonnen zahlen speichern um mit ihnen weiterzuarbeiten... ein array geht ja mal nicht weil es ja eine vorgegebene größe haben muss -> die weiß ich ja aber nicht!

Code:
import eprog.*;

public class Konvneck extends EprogIO
{
    public static void main(String[] args)
    {
        einlesen();
    }
    
    /////////////////////////
    // Methode zum Einlesen//
    /////////////////////////
    
    private static void einlesen()
    {
        float xKoord, yKoord;
        String input = ""; // dieser String enthält die Eingabe
        int counter = 0; // zum Zählen der Koordinatenpaare
        
        do
        {
            input = readWord();
            String teil = input.substring(input.indexOf('(')+1, input.indexOf(')'));
            
            try
            {
                xKoord=Float.parseFloat(teil.substring(0, teil.indexOf(',')));
                yKoord=Float.parseFloat(teil.substring(teil.indexOf(',')+1, teil.length()));
                println (xKoord);
                println (yKoord);
                counter++;
                println (counter);
            }
            
            catch (NumberFormatException e)
            {
                throw new IllegalArgumentException("FALSCHE EINGABE");
            }
            
            if ( (xKoord < -100) || (xKoord > 100) || (yKoord < -100) || (yKoord > 100) )
            {
                println ("FALSCHE EINGABE");
            }

        } while (!(input.endsWith("=")));
        
        if ( (counter < 3) || (counter > 15) )
        {
            println ("FALSCHE EINGABE");
        }
    }
}
mfg poison
poison ist offline   Mit Zitat antworten
Alt 03.01.2004, 20:32   #24
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

@ 1.Problem:
Befrage deinen debugger. Breakpoints sind meistens hilfreich.
@2.
Möglichkeit 1:
Array, befor du etwas reinschreibst schaust du ob es voll ist, wenn es voll ist kopierst du das alte Array in ein doppelt so großes
Möglichkeit 2:
Hashtable
Möglichkeit 3:
LinkedList
...

Jak
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Alt 03.01.2004, 21:08   #25
poison
Jr. Member
 
Registriert seit: 01.04.2001
Alter: 41
Beiträge: 59


Standard

ich habe schon versucht das problem mit dem debugger zu beheben leider finde ich trotzdem den fehler nicht...

mfg poison
poison ist offline   Mit Zitat antworten
Alt 04.01.2004, 01:32   #26
Tarjan
Quantensingularität
 
Registriert seit: 28.09.2000
Alter: 55
Beiträge: 8.336


Tarjan eine Nachricht über ICQ schicken
Standard

ArrayList ist das naheliegendes, arbeitet wie ein Array, nur ist variabel.

Der Fehler tritt beim Substring auf, da anscheinend indexOf -1 zurückliefert, d.h. er findet den gesuchten char nicht mehr im String -> Lösung: indexOf vorher feststellen, und danach erst substring mit if bedingung:


Code:
int index1 = input.indexOf('(');
int index2 = input.indexOf(')');
if (index1 != -1 && index2 > index 1)
  String teil = input.substring(index1+1, index2);
ps: obejktorientierter ist es, eine ethode zu haben, die aus einen (x,y) ein koordinatenpaar extrahiert, und diese wird von einer anderen methode benutzt
____________________________________
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 04.01.2004, 22:43   #27
poison
Jr. Member
 
Registriert seit: 01.04.2001
Alter: 41
Beiträge: 59


Standard

danke für deine hilfe!

also das mit dem einlesen ist nun kein problem mehr -> dafür kann ich das ganze nicht zu einer methode mit rückgabewert machen (was in diesem fall wohl sinnvoll wäre)

mein rückgabewert sollte der Punkt mit x- und y-Koordinate sein

was ist daran falsch?

Code:
    private static Point2D.Float einlesen()
    {
        float xKoord, yKoord;
        String input = ""; // dieser String enthält die Eingabe
        int counter = 0; // zum Zählen der Koordinatenpaare
        
         do
        {
            input = readWord();
            
            int index1 = input.indexOf('(');
            int index2 = input.indexOf(')');
            
            if ( (index1 != -1) && (index2 > index1))
            {
                String teil = input.substring(index1+1, index2);
                
                try
                {
                    xKoord=Float.parseFloat(teil.substring(0, teil.indexOf(',')));
                    yKoord=Float.parseFloat(teil.substring(teil.indexOf(',')+1, teil.length()));
                    Point2D.Float punkt = new Point2D.Float(xKoord, yKoord);
                
                    if ( (xKoord < -100) || (xKoord > 100) || (yKoord < -100) || (yKoord > 100) )
                    {
                        println ("FALSCHE EINGABE");
                    }
                    
                    counter++;
                    
                    if ( (counter < 3) || (counter > 15) )
                    {
                        println ("FALSCHE EINGABE");
                    }
                }
            
                catch (NumberFormatException e)
                {
                    throw new IllegalArgumentException("FALSCHE EINGABE");
                }
            }
         } while (!(input.endsWith("=")));
        
        return Point2D.Float;
    }
die fehlermeldung:
Konvneck.java [67:1] variable xKoord might not have been initialized
return new Point2D.Float(xKoord,yKoord);
^
Konvneck.java [67:1] variable yKoord might not have been initialized
return new Point2D.Float(xKoord,yKoord);
^
2 errors
Errors compiling Konvneck.

ich verstehe schon, dass er die variablen nicht kennt -> sie existieren ja nur im try-catch-block
nur weiß ich nicht wie ich das beheben könnte

mfg poison
poison ist offline   Mit Zitat antworten
Alt 04.01.2004, 23:29   #28
Tarjan
Quantensingularität
 
Registriert seit: 28.09.2000
Alter: 55
Beiträge: 8.336


Tarjan eine Nachricht über ICQ schicken
Standard

indem du die variable ausserhalb definierst
zb. vor der while schleife mit
Point2D.Float punkt = null;

und dann nur mehr innerhalb des try catch blocks
punkt = new Point2D.Float(xKoord, yKoord);

ps: gib die variable zurück, nicht die Klasse:
return punkt;
____________________________________
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 04.01.2004, 23:38   #29
poison
Jr. Member
 
Registriert seit: 01.04.2001
Alter: 41
Beiträge: 59


Standard

ok so weit so gut...

nun kann ich z.b. eine neue methode schreiben wo ich diesen punkt verwende oder?

z.b. private static void punkt
{print (punkt);}

das müsste doch funktionieren oder?
bei mir geht das nämlich wieder einmal nicht

mfg poison
poison ist offline   Mit Zitat antworten
Alt 04.01.2004, 23:45   #30
Tarjan
Quantensingularität
 
Registriert seit: 28.09.2000
Alter: 55
Beiträge: 8.336


Tarjan eine Nachricht über ICQ schicken
Standard

jo, das müsste funktionieren

]
Code:
public void neueMethode()
{
 Point2D.Float p = einlesen();

 ... arbeite weiter mit p... 
}
ps: was ist das eigentlich für eine aufgabe, da gibs nämlich jemander der für genau das gleiche beispiel eine lösung sucht
____________________________________
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 22:51 Uhr.


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