Erste Schritte Zeichenkette zerlegen

Diskutiere Zeichenkette zerlegen im Java Basics - Anfänger-Themen Bereich.
M

Mariechen

hi ich hab ein paar Probleme mit dieser Aufgabe es wäre lieb wenn mir jemand helfen könnte

Bei der aufgabe muss ich die Zeichenkette muss ich die zeichenkette zerlegen um sie dann zu überprüfen diesen teil versteh ich nicht so ganz

public static Rational parse(String arg) {
int zaehler = 0;
int nenner = 1;

// Hier muss der String arg geprüft und zerlegt werden,
// so dass zaehler und nenner die Werte links und rechts von / enthalten

return new Rational(zaehler, nenner);

Ergänzen Sie die Klasse dann um eine Klassenmethode parse. Die Methode nimmt eine Zeichenkette
an und liefert eine Referenz auf ein neues Rational-Objekt.
Die Methode liest die Daten für dieses Objekt aus der Zeichenkette, die die Form "GZ/GZ" haben
sollte. Darin steht GZ jeweils für eine Ganzzahldarstellung ohne vorangehende oder folgende White
Spaces, ggf. mit Vorzeichen '+' oder '-'. Die erste Zahl gibt den Dividend, die zweite Zahl den Divisor
(nicht unbedingt in normalisierter Form!) für das neue Objekt an.
Beispiele: "-2/3" "24/-8" "-20/-20"
Die Methode soll eine IllegalArgumentException werfen, wenn die vorliegende Eingabe nicht das erwartete Format hat. Besteht aber der Fehler darin, dass der Divisor 0 ist, soll eine ArithmeticException
geworfen werden.
Hinweise: Verwenden Sie die Methoden substring aus String und parseInt aus Integer.
Werfen Sie Exceptions nur dort selbst, wo es nötig ist. Wenn eine verwendete Methode / Operation
sowieso eine entsprechende Exception wirft, wenn ein bestimmter Fehler vorliegt, müssen Sie diesen
Fall nicht selbst explizit (per Fallunterscheidung und throw-Anweisung) behandeln.
 
Tarrew

Tarrew

Wo ist dein genaues Problem? Dir wird ja schon vorgegeben, welche Methoden man nutzen soll.

Hier mal ein Beispiel, wie man den Zähler (erstmal als String) extrahiert:
Java:
        String s = "-2/3";
        String zaehler = s.substring(0, s.indexOf("/"));
Ähnlich gehts mit dem Nenner. Fehlt dann nur noch das Umwandeln in den Datentypen int und die Fehlerbehandlung.
 
M

Mariechen

ahhh ja genau das war mein Problem
Also beim nenner muss ich das einfach anders herum machen und damit hab ich den dann auch schon rausgefeilter um den zu werfen wenn der 0 ist?
 
M

Mariechen

Bitte was? Du bist wirklich sehr schwer zu verstehen ...
einfach um herauszufinden ob der nenner 0 ist
ich hab das jetzt so gelöst
public static Rational parse(String arg)
{
String a="0";
int pos = arg.indexOf('/');

String zz = arg.substring(0, pos);
String nz = arg.substring(pos+1, arg.length());
zaehler = Integer.parseInt(zz);
nenner = Integer.parseInt(nz);

if(nz==a)
{
throw new ArithmeticException();
}

if(arg == zz+pos+nz)
return new Rational(zaehler, nenner);
else
throw new IllegalArgumentException();

}

danke für die Hilfe
 
T

temi

einfach um herauszufinden ob der nenner 0 ist
ich hab das jetzt so gelöst
Was spricht denn gegen if (nenner == 0) {...}???

Strings werden nicht mit == verglichen, sondern mit equals(). Hast du deinen Code mal ausprobiert? Die Bedingung "nz==a" dürfte nie erfüllt sein. Die Bedingung "arg==zz+pos+nz" ist auch sehr fragwürdig. Was soll das bewirken? Dir ist schon klar, dass "pos" ein Integerwert ist?
 
Thema: 

Zeichenkette zerlegen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben