WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   [java] koordinatenpaare als string einlesen (http://www.wcm.at/forum/showthread.php?t=120410)

poison 04.01.2004 23:55

Q
 
ok so jetzt habe ich mal genug vom programmieren... der mensch muss ja auch noch etwas anderes tun -> z.b schlafen ;)

mfg poison

ps: das ist eine von mehreren verschiedenen programmieraufgabe, die wir auf der uni lösen müssen -> der andere, der auch um hilfe gebeten hat, hat aber ein anderes beispiel als ich...

ach, ja ich hoffe nciht, dass jemand jetzt vermutet ich bin so bequem und lasse mir hier die aufgabe lösen und versuche nicht selber nachzudenken -> ich gebe mir wirklich mühe und versuche auch soweit es mir möglich ist es alleine zu lösen...
nur als programmieranfänger hat man es ziemlcih schwer alleine mit einem programm fertig zu werden, das fehler enthält
man sieht entweder die fehler nicht oder man erkennt sie zwar aber weiß nicht wie man sie behebt

deswegen bin ich dir tarjan auch wirklich sehr dankbar für deine hilfe! :)

Tarjan 05.01.2004 00:03

ist mir halt aufgefallen, da er die gleiche mutterklasse verwendet wie du

naja, aller anfang ist schwer, nicht unterkriegen lassen ;)

gut nacht

poison 05.01.2004 15:59

ok jetzt habe ich versucht die methode so umzuschreiben, dass die punkte in einen vector gespeichert werden und dieser vector dann zurückgegeben wird -> das macht der code auch nur wird in diesem vector nur der letzte punkt gespeichert
jetzt meine frage wo liegt der fehler?



Code:

import eprog.*;
import java.util.*;
import java.awt.geom.*;

public class Konvneck extends EprogIO
{
    public static void main(String[] args)
    {
        point();
    }
   
    /////////////////////////
    // Methode zum Einlesen//
    /////////////////////////
   
    private static Vector einlesen()
    {
        float xKoord, yKoord;
        String input = ""; // dieser String enthält die Eingabe
        int counter = 0; // zum Zählen der Koordinatenpaare
        Vector punkte = null;
        Point2D.Float punkt = null;
       
        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()));
                   
                    if ( (xKoord < -100) || (xKoord > 100) || (yKoord < -100) || (yKoord > 100) )
                    {
                        println ("FALSCHE EINGABE");
                    }
                   
                    punkt = new Point2D.Float(xKoord, yKoord);
                   
                    println (xKoord);
                    println (yKoord);
                    println (punkt);
                }
     
                catch (NumberFormatException e)
                {
                    throw new IllegalArgumentException("FALSCHE EINGABE");
                }
               
                punkte = new Vector();
                punkte.add (punkt);
                counter++;
               
            }
        } while (!(input.endsWith("=")));

        println (counter);
       
        if ( (counter < 3) || (counter > 15) )
        {
            println ("FALSCHE EINGABE");
        }
       
        return punkte;
    }
   
   
    public static void point()
    {
        Vector punkte = einlesen();
        println (punkte.size());
        Enumeration enum = punkte.elements(); // Enumeration auf einzelne Elemente
       
        while(enum.hasMoreElements())
        {
            println (enum.nextElement().toString()+" ");
        }
    }
 
}

mfg poison

Tarjan 05.01.2004 18:44

du legst bei jeden punkt mit
Code:

punkte = new Vector();
einen neuen vektor an, ud speicherst den letzten punkt da drinnen, somit kann nur der letzte punkt drinnen gespeichert werden, lege den Vevtor dort an, wo er definiert wird, du willst ja alle punkte in den vector reinspeichern

ps: bei debuggen mit variablenkontrolle fallen solche dinge auf

jak 06.01.2004 12:37

gelöscht

hat sich erledigt
Jak

poison 07.01.2004 13:45

ok mein programm ist nun fast fertig -> nur eine kleinigkeit passt noch nicht:
wenn die eingabe nicht den regeln entspricht dann soll sofort das ganze beendet werden

wie mache ich das?

mfg poison

jak 07.01.2004 17:50

Mir fallen zwei Möglichkeiten ein:
1. System.exit(0) oder so ähnlich
2. eine Exception werfen: Du kapselst das ganze Programm in einen try-catch Block und wirfst bei illegaler eingabe eine Exception.

Mir ist 2. sympatischer.

Jak

Tarjan 08.01.2004 09:01

Sind die beiden gängigen Methoden, wobei die erste Möglichkeit mit System.exit(int) zwar die einfachere, aber auch die brutalere ist, da hier die VM sofort beendet wird.

poison 08.01.2004 16:24

also wenn ich es mit System.exit(0) mache dann sollte das aber keinen wirklichen unterschied machen - ich meine vom programmablauf selbst oder?

mfg poison

jak 08.01.2004 19:49

Rein vom Programmablauf gibt es nur einen minimalen Unterschied:
beim .exit verlässt du das Programm sofort, egal wo du gerade warst.
Bei einem try{...throw...}catch(...){../*hier*/.} kannst du noch etwas ausführen (da wo das "hier" steht). Außerdem wandert die Exception durch alle Unterprogramme bis sie gefangen wird. Du kannst damit also erheblich mehr machen.

Wenn du weiter Java oder C++ Programmieren willst solltest du dir Exceptions so oder so mal anschaun. Sie sind ziemlich praktisch.

Jak


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

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