Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
public class StellenTester
{
private int zahl;
private byte anzStellen;
public void einlesen()
{
StellenRechner sr = new StellenRechner();
String z =JOptionPane.showInputDialog("Bitte Zahl eingeben:");
zahl = Integer.parseInt(z);
sr.setZahl(zahl);
}
public void auslesen()
{
StellenRechner sr = new StellenRechner();
anzStellen = sr.getStellen();
JOptionPane.showMessageDialog(null,"Die zahl " + zahl + " hat " + anzStellen + " Stellen");
}
public static void main(String[] args)
{
StellenTester t = new StellenTester();
StellenRechner sr = new StellenRechner();
t.einlesen();
sr.berechne();
t.auslesen();
}
}
Das mit dem importieren ist nicht der fehler da ich es vergessen habe mitzukopieren sry.
was könnte der fehler sonnst sein ?
Habe ich vl die getter und setter methoden falsch geschrieben?
In netbeans erscheint bei der ausgabe der int anzStellen als 0 doch eigentlich müsst er einen wert in der if schleife zugewiesn bekommen haben
Brauche noch einmal eure Hilfe !
Was ich hier der Fehler? Netbeans erkennt nehmlich zuerst keinen Fehler nur beim ausführen erkennt es einen.
Daher kann ich das Projekt nicht einmal testen.
[JAVA=42]
package roemzahl;
import javax.swing.JOptionPane;
public class Tester
{
private String roemWert;
private int dezimalWert;
RoemZahl rz = new RoemZahl();
public String getRoemWert()
{
return roemWert;
}
public void RoemZahlTest()
{
roemWert = JOptionPane.showInputDialog("Römische Zahl eingeben:");
rz.berechne();
dezimalWert = rz.getDezimal();
JOptionPane.showMessageDialog(null,"Die römische Zahl "+roemWert+" hat im Dezimalsystem den Wert " + dezimalWert);
}
public static void main(String[] args)
{
Tester t = new Tester();
t.RoemZahlTest();
}
}[/code]
[JAVA=42]
package roemzahl;
import javax.swing.JOptionPane;
public class RoemZahl
{
private String roemWert;
private int dezimal1,dezimal2,dezimal3,dezimalWert;
private char roem1,roem2,roem3;
Tester erstellt eine Instanz von RoemZahl, Instanz von RoemZahl erstellt darauf hin eine Instanz von Tester, die wiederum eine Instanz von RoemZahl erstellt, die wiederum....
Solltest dich also Fragen ob RoemZahl wirklich eine Instanz von Tester benötigt.
Ganz komme ich nicht mit ;P
bin nämlich anfänger.
Aber ich habe jetz den befehl Tester t = new Tester(); in die methode berechne eingefügt.
Das Programm lässt sich ausführen aber trotzdem funktioniert es nicht.
Es kommt diesmal eine weiter Fehlermeldung
Exception in thread "main" java.lang.NullPointerException
at roemzahl.RoemZahl.berechne(RoemZahl.java:27)
at roemzahl.Tester.RoemZahlTest(Tester.java:22)
at roemzahl.Tester.main(Tester.java:30)
Java Result: 1
vl kannst du das ganz einfacher erklären damit es ein blödmann versteht
Danke
Schau doch in die Zeile 27 und versuche zu erkennen, was da null ist. Deine römische Zahl braucht keine Instanz der Tester-Klasse, egal wo du es hinschiebst. Stattdessen kannst du alle benötigten Werte im Konstruktor übergeben
Die Klassen haben ja ne 1:1-Assoziation, ich kenne das bis jetzt nur so, dass du dann in der Klasse Tester nen Attribut vom Typ RoemZahl stehen hast und in der Klasse RoemZahl hast du nen Attribut vom Typ Tester stehen.
Damit sich die Klassen dann auch kennen, musst du beim Erzeugen der Klasse RoemZahl auf die Klasse Tester verweisen. Das geschieht, indem du beim Konstruktor this übergibst.
Java:
public class Tester {
//...
RoemZahl rz = new RoemZahl(this); //Erzeugen des Objektes von Klasse RoemZahl und
//verweiß auf die Klasse durch this
/*
* private RoemZahl rz = null; <<Attribut
* rz = new RoemZahl(this); <<Verweiß auf diese Klasse durch this
*/
//...
}
Java:
public class RoemZahl {
//...
private Tester aTester = null; //Attribut
public RoemZahl(Tester aTester) {
//...
this.aTester = aTester; //aTester ist das Objekt der Klasse Tester
//...
}
public void berechne() {
roemWert = aTester.getRoemWert(); //t durch aTester ersetzt du kannst natürlich auch das
//aTester anders nennen
//...
}
}
Deine Klasse RoemZahl hatte keinen Konstruktor? :O Ist mir grad aufgefallen.
Ich hab es mal so ausprobiert und es funktioniert, fast Du musst natürlich noch die ganzen Fehler bei der Eingabe abfangen, aber die wirst du schon selbst finden :bae: