![]() |
![]() |
|
|
|||||||
| Programmierung Rat & Tat für Programmierer |
![]() |
|
|
Themen-Optionen | Ansicht |
|
|
#21 |
|
Jr. Member
![]() Registriert seit: 01.04.2001
Alter: 41
Beiträge: 59
|
@tarjan
ich benütze netbeans jetzt gibt er wieder etwas aus nur das problem ist dabei, dass er wenn ich z.b. (3,4) eingebe er mir folgendes ausgibt 3.0 34.0 danke auf jeden fall für deine hilfe bisher! ![]() mfg poison |
|
|
|
|
|
#22 |
|
Quantensingularität
![]() |
hmm, seltsam, ich habe deine lesemethode jetzt nachgebildet, und bei mir kommt der 1 nicht vor. schon mal das programm debugt? ich fragte eben wegen der möglichkeit des debuggens, da sehe ich meist solche fehler wie zb. das mit dem 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! |
|
|
|
|
|
#23 |
|
Jr. Member
![]() Registriert seit: 01.04.2001
Alter: 41
Beiträge: 59
|
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");
}
}
}
|
|
|
|
|
|
#24 |
|
Inventar
![]() Registriert seit: 13.06.2001
Beiträge: 1.830
|
@ 1.Problem:
Befrage deinen debugger. Breakpoints sind meistens hilfreich. @2. Möglichkeit 1: Array, befor du etwas reinschreibst schaust du ob es voll ist, wenn es voll ist kopierst du das alte Array in ein doppelt so großes Möglichkeit 2: Hashtable Möglichkeit 3: LinkedList ... 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) |
|
|
|
|
|
#25 |
|
Jr. Member
![]() Registriert seit: 01.04.2001
Alter: 41
Beiträge: 59
|
ich habe schon versucht das problem mit dem debugger zu beheben leider finde ich trotzdem den fehler nicht...
![]() mfg poison |
|
|
|
|
|
#26 |
|
Quantensingularität
![]() |
ArrayList ist das naheliegendes, arbeitet wie ein Array, nur ist variabel.
Der Fehler tritt beim Substring auf, da anscheinend indexOf -1 zurückliefert, d.h. er findet den gesuchten char nicht mehr im String -> Lösung: indexOf vorher feststellen, und danach erst substring mit if bedingung: Code:
int index1 = input.indexOf('(');
int index2 = input.indexOf(')');
if (index1 != -1 && index2 > index 1)
String teil = input.substring(index1+1, index2);
____________________________________
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! |
|
|
|
|
|
#27 |
|
Jr. Member
![]() Registriert seit: 01.04.2001
Alter: 41
Beiträge: 59
|
danke für deine hilfe!
![]() also das mit dem einlesen ist nun kein problem mehr -> dafür kann ich das ganze nicht zu einer methode mit rückgabewert machen (was in diesem fall wohl sinnvoll wäre) mein rückgabewert sollte der Punkt mit x- und y-Koordinate sein was ist daran falsch? Code:
private static Point2D.Float einlesen()
{
float xKoord, yKoord;
String input = ""; // dieser String enthält die Eingabe
int counter = 0; // zum Zählen der Koordinatenpaare
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()));
Point2D.Float punkt = new Point2D.Float(xKoord, yKoord);
if ( (xKoord < -100) || (xKoord > 100) || (yKoord < -100) || (yKoord > 100) )
{
println ("FALSCHE EINGABE");
}
counter++;
if ( (counter < 3) || (counter > 15) )
{
println ("FALSCHE EINGABE");
}
}
catch (NumberFormatException e)
{
throw new IllegalArgumentException("FALSCHE EINGABE");
}
}
} while (!(input.endsWith("=")));
return Point2D.Float;
}
Konvneck.java [67:1] variable xKoord might not have been initialized return new Point2D.Float(xKoord,yKoord); ^ Konvneck.java [67:1] variable yKoord might not have been initialized return new Point2D.Float(xKoord,yKoord); ^ 2 errors Errors compiling Konvneck. ich verstehe schon, dass er die variablen nicht kennt -> sie existieren ja nur im try-catch-block nur weiß ich nicht wie ich das beheben könnte mfg poison |
|
|
|
|
|
#28 |
|
Quantensingularität
![]() |
indem du die variable ausserhalb definierst
zb. vor der while schleife mit Point2D.Float punkt = null; und dann nur mehr innerhalb des try catch blocks punkt = new Point2D.Float(xKoord, yKoord); ps: gib die variable zurück, nicht die Klasse: return punkt;
____________________________________
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! |
|
|
|
|
|
#29 |
|
Jr. Member
![]() Registriert seit: 01.04.2001
Alter: 41
Beiträge: 59
|
ok so weit so gut...
nun kann ich z.b. eine neue methode schreiben wo ich diesen punkt verwende oder? z.b. private static void punkt {print (punkt);} das müsste doch funktionieren oder? bei mir geht das nämlich wieder einmal nicht ![]() mfg poison |
|
|
|
|
|
#30 |
|
Quantensingularität
![]() |
jo, das müsste funktionieren
] Code:
public void neueMethode()
{
Point2D.Float p = einlesen();
... arbeite weiter mit p...
}
![]()
____________________________________
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) | |
|
|