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 30.12.2003 23:44

[java] koordinatenpaare als string einlesen
 
hallo!

ich habe ein problem bei folgender aufgabe:
ich soll die koordinatenpaare eines vielecks als string einlesen, die folgenden aufbau haben:
"(x,y)" wobei x und y Zahlen sind

der datensatz wird durch "=" abgeschlossen

also ich weiß wie man einen string einliest und dann die einzelnen zeichen ausliest -> damit könnte ich ja schon einmal die zahlen herausfiltern
(ich hoffe dieser gedankengang von mir ist richtig - bin nämlich noch programmieranfänger!)

nur wie speichere ich die zahlen dann um mit ihnen rechnen zu können - geht das vielleicht mit einem array?

bin um jeden vorschlag dankbar!

mfg poison

Br@in 30.12.2003 23:54

angenommen x ist 145, dann liest du als string ein: 1 - 4 - 5

eine vorher angelegte INT-Variable zB "xkoor"

xkoor=1
xkoor=xkoor*10+4
xkoor=xkoor*10+5

[damit ist xkoor das 145...]

mit der ykoor machst es dann genauso

dann übernimmst immer xkoor und ykoor in die nächste Zeile des Arrays...

Problem gelöst?

Tarjan 31.12.2003 00:33

Schaue dir mal die klasse java.awt.Point an, die beschreibt an sich eine koordinate im awt. entweder du kannst diese verwenden, oder du schreibst dir eine eigene klasse die die koordinaten so darstellt, wie du sie brauchst, bzw wenn du damit rechen willst, wird dir sowiseo nichts übrigbleiben als eine eigene klasse und die rechnungsarten al methoden zu implementieren.

poison 31.12.2003 17:38

also ich habe jetzt versucht die zahlen mittels StringTokenizer herauszufiltern aber irgendwo gibt es ein problem...

Code:


import eprog.*;

public class Konvneck extends EprogIO
{
    public static void main (String[] args)
    {
       
    String Eingabe = "";
   
    do
    {
        Eingabe = readWord();
       
        StringTokenizer konvertiert = new StringTokenizer (Eingabe, '(', ',', ')');
        println (konvertiert);
       
        while (konvertiert.hasMoreTokens()) {
        System.out.println(konvertiert.nextToken());
      }

    } while (!(Eingabe.endsWith("=")));
   
    }
}

irgendwie gibt er immer fehlermeldungen aus :(
was mache ich falsch?

mfg poison

Tarjan 31.12.2003 17:50

Der String Tokenizer kennt nur einen Delimiter. Du versuchst ihm 3 mitzugenen. Wenn die Eingabe immer (y,y) aussieht dann, entferne den 1. und letzte char. Dan gehts mit einen Stringtokenizer mit delimiter ",". Ausserdem braucht der Tokenizer einen String als Delimiter, keinen char (" " statt ' ').

Ich würde es aber komplett anders machen: mit toCharArray in eine char Array umwandeln und dann mit Charakter.isDigit() die Zahlen rausparsen. Eventuell kannst mit indexOf(',') den String vorher noch teilen.

poison 31.12.2003 18:40

Code:


import eprog.*;
import java.util.*;

public class Konvneck extends EprogIO
{
    public static void main (String[] args)
    {
       
    String Eingabe = "";
   
    do
    {
        Eingabe = readWord();
       
        char Zahlen[] = Eingabe.toCharArray();
        if (Charakter.isDigit())
        {}

    } while (!(Eingabe.endsWith("=")));
   
    }
}

meinst du so?
wie bekomme ich da die zahlen heraus?

danke auf jeden fall schon mal für deine hilfe! :)

mfg poison

Tarjan 31.12.2003 18:48

array durchiterien (mit for oder while schleife (wenn char zahl ist diese wegspeichern (zB. in StringBuffer), wenn wieder kein digit mehr ist -> diese mit Integer.parseInt(StringBuffer.toString()) in int umwandeln.

2. Möglichkeit mit indexOf('(') und indexOf(',') und indexOf(')') und der substring Methode von String die Zahlen rausholen.

1.Möglichkeit ist etwas komplizierter, dafür funktinoniert sie mit allen Zahlen in einen String, egal was sonst noch drinnen steht. 2.Möglichkeit ist einfacher, dafür funktiniert sie nur, wenn der String (x,y) aussieht.

poison 02.01.2004 11:12

guten morgen!

also ich bekomme noch eine fehlermeldung wenn ich folgenden code versuche zu kompilieren:
Konvneck.java [27:1] isDigit(char) in java.lang.Character cannot be applied to (char[])
if ( (Character.isDigit(Zeichen)) ) // Soll überprüfen ob Zeichen eine Zahl ist
^
1 error
Errors compiling Konvneck.

ich verstehe die ausgabe nicht ganz - was muss ich ändern?

Code:

import eprog.*;

public class Konvneck extends EprogIO
{
    public static void main (String[] args)
    {
       
    String Eingabe = "";
    float Laenge = 0;
   
    do
    {
        Eingabe = readWord();
       
        char Zeichen[] = Eingabe.toCharArray();
       
      for (int i = 0; i <= Zeichen.length; i++)
      {
          if ( (Character.isDigit(Zeichen)) ) // Soll überprüfen ob Zeichen eine Zahl ist
          {
              println (Zeichen);
          }
      }

    } while (!(Eingabe.endsWith("=")));
   
    }
}

mfg poison

jak 02.01.2004 12:38

Ich glaube da gehört statt:
Character.isDigit(Zeichen))
Character.isDigit(Zeichen[i]))

<edit>
Daher auch die Fehlermeldung: du versuchst die Funktion "isDigit" auf ein Array of char anzuwenden, nicht auf ein einzelnes char.
</edit>

Jak

Tarjan 02.01.2004 13:30

genau dass isses


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

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