koordinatenpaare als string einlesen

  • Themenstarter Themenstarter ludmilla
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
L

ludmilla

Gast
ich bekomme bei diesem code folgende fehlermeldung:
Konvneck.java [28:1] class expected
tmp = Zeichen[].charAt(i);
^
1 error
Errors compiling Konvneck.

dieser code soll einen string folgender art einlesen:
(x,y) (x,y)...
x und y sind dabei float-Zahlen
und ich muss diese nun aus dem string herausfiltern und sie in geeigneter weise speichern um mit ihnen weiterarbeiten zu können

jetzt meine frage:
stimmt mein code soweit?

Code:
import eprog.*;

public class Konvneck extends EprogIO
{
    public static void main (String[] args)
    {
        
    String Eingabe = "";
    char tmp;
    
    do
    {
        Eingabe = readWord();
        
        char Zeichen[] = Eingabe.toCharArray();
        
        for (int i = 0; i <= Zeichen.length; i++)
        {
           tmp = Zeichen[].charAt(i); // soll einzelnes Zeichen in tmp speichern
           
           if ( (Character.isDigit(tmp)) ) // soll überprüfen ob Zeichen eine Zahl ist
           {
               println (tmp);
               StringBuffer Zahlen = tmp;
               append (tmp);
           }
           
           Zahl.parseFloat(Zahlen.toString());
       }

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

mfg ludmilla
 
ok jetzt bin ich registriert - in der zwischenzeit habe ich auch schon ein paar fehler entdeckt und korrigiert, trotzdem gibt er noch ein paar fehlermeldungen aus:

Konvneck.java [28:1] cannot resolve symbol
symbol : method charAt (int)
location: class char[]
tmp = Zeichen.charAt(i);
^
Konvneck.java [37:1] cannot resolve symbol
symbol : variable Zahlen
location: class Konvneck
Zahl.parseFloat(Zahlen.toString());
^
Konvneck.java [37:1] float cannot be dereferenced
Zahl.parseFloat(Zahlen.toString());
^
3 errors
Errors compiling Konvneck.


Code:
import eprog.*;

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

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

mfg ludmilla
 
ludmilla hat gesagt.:
Konvneck.java [28:1] cannot resolve symbol
symbol : method charAt (int)
location: class char[]
tmp = Zeichen.charAt(i);
^
Zeichen ist ein Array, der Zugriff auf Arrayelemente erfolgt über den index:
tmp = Zeichen;

ludmilla hat gesagt.:
Konvneck.java [37:1] cannot resolve symbol
symbol : variable Zahlen
location: class Konvneck
Zahl.parseFloat(Zahlen.toString());
^
Du definiert Zahlen im if Block, nach beenden des Blocks ist Zahlen nicht mehr sichtbar.

ludmilla hat gesagt.:
Konvneck.java [37:1] float cannot be dereferenced
Zahl.parseFloat(Zahlen.toString());
^
Zahl ist ein float also ein primitiver Datentyp!
Besser so: Zahl = Float.parseFloat(Zahlen.toString());

Gruß Jaraz

PS: Mit was programmierst du?
Bei einer vernünftigen IDE werden dir solche Fehler schon bei der Eingabe markiert!
 
hallo!

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 ludmilla
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben