![]() |
![]() |
|
|
|||||||
| Registrieren | Hilfe/Forumregeln | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
| Programmierung Rat & Tat für Programmierer |
![]() |
|
|
Themen-Optionen | Ansicht |
|
|
#11 |
|
Jr. Member
![]() Registriert seit: 01.04.2001
Alter: 41
Beiträge: 59
|
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("=")));
}
}
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 |
|
|
|
|
|
#12 |
|
Quantensingularität
![]() |
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! |
|
|
|
|
|
#13 |
|
Jr. Member
![]() Registriert seit: 01.04.2001
Alter: 41
Beiträge: 59
|
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 |
|
|
|
|
|
#14 |
|
Quantensingularität
![]() |
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);
}
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! |
|
|
|
|
|
#15 |
|
Inventar
![]() Registriert seit: 13.06.2001
Beiträge: 1.830
|
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) |
|
|
|
|
|
#16 |
|
Quantensingularität
![]() |
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! |
|
|
|
|
|
#17 |
|
Inventar
![]() Registriert seit: 13.06.2001
Beiträge: 1.830
|
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);
}
____________________________________
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) |
|
|
|
|
|
#18 |
|
Jr. Member
![]() Registriert seit: 01.04.2001
Alter: 41
Beiträge: 59
|
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("=")));
}
}
|
|
|
|
|
|
#19 |
|
Quantensingularität
![]() |
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! |
|
|
|
|
|
#20 |
|
Quantensingularität
![]() |
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! |
|
|
|
![]() |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| Ansicht | |
|
|