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


Standard

ok ich habe das ganze mal ein bisschen überarbeitet:

Code:
import eprog.*;

public class Konvneck extends EprogIO
{
    public static void main (String[] args)
    {
        einlesen ();
    }
    
    /////////////////////////
    // Methode zum Einlesen//
    ////////////////////////
    
    private static void einlesen()
    {
        String Eingabe = "";
        char tmp;
        float Zahl = 0;
        
        do
        {Eingabe = readWord();
        char Zeichen[] = Eingabe.toCharArray();
        
        for (int i = 0; i <= Zeichen.length; i++)
        {
            tmp = Zeichen[i];
            
            if ( (Character.isDigit(tmp)) || (tmp == '-') ) // Soll überprüfen ob Zeichen eine Zahl ist
            {
                StringBuffer Zahlen = new StringBuffer(tmp);
                Zahlen.append (tmp);                
                Zahl = Float.parseFloat(Zahlen.toString());
                println (Zahl);
            }
        }
    } while (!(Eingabe.endsWith("=")));
    
    }
}
jetzt gibt es ein paar probleme:
das - darf ich ja nicht in den string speichern weil der dann umgewandelt wird in einen float -> das brauch ich aber weil es ja sonst eine ganz andere zahl ist!

außerdem nimmt er immer nur eine Zahl an -> also wenn ich eine kommazahl eingebe z.b 3.4 dann nimmt er 3 als zahl an und 4 als einzelne zahl an -> wie kann ich das ändern!

ich danke euch schon mal für eure hilfe!

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


Tarjan eine Nachricht über ICQ schicken
Standard

mach noch zusätzlich eine abfrage || (tmp == '.'), dann wird . dazu gespeichert
____________________________________
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 02.01.2004, 14:54   #13
poison
Jr. Member
 
Registriert seit: 01.04.2001
Alter: 41
Beiträge: 59


Standard

leider funktioniert das so nicht -> es tritt das gleiche problem wie beim -

wenn ich z.b. (3.4,5) eingebe macht er folgende fehlermeldung
(3.4,5)
java.lang.NumberFormatException: For input string: "."
at java.lang.NumberFormatException.forInputString(Num berFormatException.java:48)
at java.lang.FloatingDecimal.readJavaFormatString(Flo atingDecimal.java:1207)
at java.lang.Float.parseFloat(Float.java:222)
at Konvneck.einlesen(Konvneck.java:42)
at Konvneck.main(Konvneck.java:15)
Exception in thread "main" 7
3.0


außerdem bin ich gerade draufgekommen kann ich nicht mehr als ein koordinatenpaar einlesen dann macht er folgende fehlermeldung:
eingabe: (3,4) (5,6)

3.0
4.0
java.lang.ArrayIndexOutOfBoundsException: 5
at Konvneck.einlesen(Konvneck.java:35)
at Konvneck.main(Konvneck.java:15)
Exception in thread "main"

was muss ich hier machen?

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


Tarjan eine Nachricht über ICQ schicken
Standard

der fehler beim konvertrieren liegt darin, dass du jede char gleich in eine float umwandelst, erst umwandeln, wenn wieder ein anderes zeichen als -,. oder zahl kommt (also die umwandlungsroutine in den else zweig stecken:
Code:
StringBuffer zahlen = new Stringbuffer();
if ( Character.isDigit(tmp) || tmp=='-' || tmp=='.')
{
  zahlen.append (tmp);                
}
else if (zahl.length()!=0)
{
  zahl = Float.parseFloat(zahlen.toString());
  println (Zahl);
}
übergibts du die zweite koordinate als zweiten parameter? dann liegt die zweite koordinate auch in args[1] und nicht mehr in args[0]

ps: java Konvention ist, dass variablennamen klein geschrieben werden, genauso wie methoden und packages, nur klassennamen werden groß geschrieben

pps: den code oben habe ich nicht überprüft, nur so aus dem stegreif geschrieben
____________________________________
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 02.01.2004, 18:54   #15
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

Mir ist gerade eine andere möglichkeit eingefallen:
Du suchst im String nach "(" und ")", machst
String[] temp=input.substring(klammeraufposition,klammerzup osition).split(",",2);
Damit hast du ein String[] temp
float f;
for (int i=0;i<temp.length;i++){
try{
f=Float.parseFloat(temp[i])
//mach irgendetwas mit f
}
catch (NumberFormatException e){}
}

Durch das parseFloat spart man sich das ganze suchen nach .,-,usw.

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 02.01.2004, 19:15   #16
Tarjan
Quantensingularität
 
Registriert seit: 28.09.2000
Alter: 55
Beiträge: 8.336


Tarjan eine Nachricht über ICQ schicken
Standard

das ist mein 2. Vorschlag oben gewesen
____________________________________
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 02.01.2004, 19:42   #17
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

Sorry, hab ich übersehen.
dein 2.Vorschlag würde wohl etwa so aussehen.
Code:
float xKoord,yKoord;
//Hier muss noch irgendeine Überprüfung her, sonst könnte es eine Endlosschleife werden
while (input.length>1){
 String t=input.substring(input.indexOf('(')+1,input.indexOf(')')-1);
 try{
  xKoord=Float.parseFloat(t.substring(0,t.indexOf(',')-1));
  yKoord=Float.parseFloat(t.substring(t.indexOf(',')+1,t.length));
 }
 catch (NumberFormatException e){
  throw new IllegalArgumentException("Ungueltiges Eingabeformat");
 }
 //irgendwas mit xKoord und yKoord machen
 input=input.substring(input.indexOf(')')+1,input.length);
}
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 02.01.2004, 20:07   #18
poison
Jr. Member
 
Registriert seit: 01.04.2001
Alter: 41
Beiträge: 59


Standard

hallo jak!

danke für deinen vorschlag, aber jetzt habe ich mich schon so lange mit tarjans version herumgeschlagen - werd jetzt dabei bleiben

ich glaube es gibt ein kleines problem mit der else if abfrage - das ganze wird zwar jetzt ohne fehler kompiliert aber wenn ich versuche etwas einzugeben macht er gar nichts...

Code:
import eprog.*;

public class Konvneck extends EprogIO {
    public static void main(String[] args) {
        einlesen();
    }
    
    /////////////////////////
    // Methode zum Einlesen//
    /////////////////////////
    
    private static void einlesen() {
        String eingabe = "";
        char tmp;
        float zahl = 0;

        do {
            eingabe = readWord();
            char zeichen[] = eingabe.toCharArray();
            
            for (int i = 0; i < zeichen.length; i++)
            {
                tmp = zeichen[i];
                StringBuffer zahlen = new StringBuffer();
                
                if ( (Character.isDigit(tmp)) || (tmp == '-') || (tmp == '.') )
                {
                    zahlen.append(tmp);
                }
                
                else if (zahlen.length()!= 0)
                {
                zahl = Float.parseFloat(zahlen.toString());
                println(zahl);
                }
            }
        } while (!(Eingabe.endsWith("=")));
    }
}
mfg poison
poison ist offline   Mit Zitat antworten
Alt 02.01.2004, 21:27   #19
Tarjan
Quantensingularität
 
Registriert seit: 28.09.2000
Alter: 55
Beiträge: 8.336


Tarjan eine Nachricht über ICQ schicken
Standard

habs mir angesehen, die zeile StringBuffer zahlen = new StringBuffer(); gehört vor die for schleife, ansonsten wird der stringbuffer immer wieder neu angelegt, so sollte es funktionieren:
Code:
			StringBuffer zahlen = new StringBuffer();
			for (int i = 0; i < zeichen.length; i++)
			{
				tmp = zeichen[i];
				
				
                
				if ( (Character.isDigit(tmp)) || (tmp == '-') || (tmp == '.') )
				{
					zahlen.append(tmp);
				}
                
				else if (zahlen.length()!=0)
				{
					zahl = Float.parseFloat(zahlen.toString());
					System.out.println(zahl);
					zahlen = new 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 02.01.2004, 21:40   #20
Tarjan
Quantensingularität
 
Registriert seit: 28.09.2000
Alter: 55
Beiträge: 8.336


Tarjan eine Nachricht über ICQ schicken
Standard

noch eine zusätzliche frage: welchen editor beutzt du eigentlich zum erstellen der klassen?
____________________________________
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)
 
Themen-Optionen
Ansicht

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 13:14 Uhr.


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