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 einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Java Variablen Standardwerte zuweisen
- Ersteller king0r
- Erstellt am
1
1668mib
Gast
Naja dazu müsstest du die Aufgabe ja kennen ;-)
Also es geht um eine Bruch-Klasse. Die soll mit einem Bruch (anzugeben in Form Zähler und Nenner als ganze Zahlen), einer ganzen Zahl oder ohne Parameter eben initalisiert werden können...
also nochmal
Mist, nun fang ich doch an zu lösen...
Also je nach dem wie man diesen Bruch anlegt wird eben ein anderer Konstruktor aufgerufen... ohne Parameter fehlt die Initialisierung sozusagen, also werden zähler und nenner mit 0/1 initialisiert, wird ein int-Wert übergeben ist es eine ganze Zahl also wird der zähler mit diesem wert initialisiert, der nenner mit 1.
Ansonsten bei zwei Parametern werden ja Zähler und Nenner übergeben...
Das compiliert so natürlich nicht wirklich.
Und da fehlen auch noch Dinge...
Wie gesagt, im Grunde das selbe wie oben... (von mir und von sebbolein)
Edit:
Und wieder ein typisches Beispiel warum es so schwer ist Leuten zu helfen, welche die Frage (Aufgabenstellung) in eigenen Worten formulieren... und ich immer wieder meinen Freunden sagen, sie mögen doch bitte die Aufgabe 1:1 schreiben. Die Leute fangen immer schon an selbst zu interpretieren.
In der Aufgabenstellung wird von Initialwerten gesprochen und nicht von Initialisierungen... und die Initalwerte der Klasse werden i.d.R. dem (bzw einem) Konstruktor übergeben - und wenn sie fehlen bekommen sie halt Standardwerte.
Also es geht um eine Bruch-Klasse. Die soll mit einem Bruch (anzugeben in Form Zähler und Nenner als ganze Zahlen), einer ganzen Zahl oder ohne Parameter eben initalisiert werden können...
also nochmal
Code:
class Bruch
private int z;
private int n;
// Konstruktor für Bruch ohne Parameter, initalisiert 0/1
public Bruch()
{
z = 0;
n = 1;
}
// Konstruktor für Bruch mit ganzer Zahl als Parameter
public Bruch(int wert)
{
z = wert;
n = 1; // Nenner 1
}
// Konstruktor für Bruch mit Zähler und Nenner als Parameter
public Bruch(int zaehler, int nenner)
{
z = zaehler;
n = nenner;
}
}
class Program
{
static int main(...)
{
Bruch b1 = new Bruch(); // = Wert 0
Bruch b2 = new Bruch(42); // = Wert 42
Bruch b3 = new Bruch(1, 3); // = Wert 1/3 = 0,33333...
}
}
Mist, nun fang ich doch an zu lösen...
Also je nach dem wie man diesen Bruch anlegt wird eben ein anderer Konstruktor aufgerufen... ohne Parameter fehlt die Initialisierung sozusagen, also werden zähler und nenner mit 0/1 initialisiert, wird ein int-Wert übergeben ist es eine ganze Zahl also wird der zähler mit diesem wert initialisiert, der nenner mit 1.
Ansonsten bei zwei Parametern werden ja Zähler und Nenner übergeben...
Das compiliert so natürlich nicht wirklich.
Und da fehlen auch noch Dinge...
Wie gesagt, im Grunde das selbe wie oben... (von mir und von sebbolein)
Edit:
Und wieder ein typisches Beispiel warum es so schwer ist Leuten zu helfen, welche die Frage (Aufgabenstellung) in eigenen Worten formulieren... und ich immer wieder meinen Freunden sagen, sie mögen doch bitte die Aufgabe 1:1 schreiben. Die Leute fangen immer schon an selbst zu interpretieren.
In der Aufgabenstellung wird von Initialwerten gesprochen und nicht von Initialisierungen... und die Initalwerte der Klasse werden i.d.R. dem (bzw einem) Konstruktor übergeben - und wenn sie fehlen bekommen sie halt Standardwerte.
Zuletzt bearbeitet:
1668mib schrieb:Naja dazu müsstest du die Aufgabe ja kennen ;-)
Also es geht um eine Bruch-Klasse. Die soll mit einem Bruch (anzugeben in Form Zähler und Nenner als ganze Zahlen), einer ganzen Zahl oder ohne Parameter eben initalisiert werden können...
also nochmal
Code:class Bruch private int z; private int n; // Konstruktor für Bruch ohne Parameter, initalisiert 0/1 public Bruch() { z = 0; n = 1; } // Konstruktor für Bruch mit ganzer Zahl als Parameter public Bruch(int wert) { z = wert; n = 1; // Nenner 1 } // Konstruktor für Bruch mit Zähler und Nenner als Parameter public Bruch(int zaehler, int nenner) { z = zaehler; n = nenner; } } class Program { static int main(...) { Bruch b1 = new Bruch(); // = Wert 0 Bruch b2 = new Bruch(42); // = Wert 42 Bruch b3 = new Bruch(1, 3); // = Wert 1/3 = 0,33333... } }
Mist, nun fang ich doch an zu lösen...
Also je nach dem wie man diesen Bruch anlegt wird eben ein anderer Konstruktor aufgerufen... ohne Parameter fehlt die Initialisierung sozusagen, also werden zähler und nenner mit 0/1 initialisiert, wird ein int-Wert übergeben ist es eine ganze Zahl also wird der zähler mit diesem wert initialisiert, der nenner mit 1.
Ansonsten bei zwei Parametern werden ja Zähler und Nenner übergeben...
Das compiliert so natürlich nicht wirklich.
Und da fehlen auch noch Dinge...
Wie gesagt, im Grunde das selbe wie oben... (von mir und von sebbolein)
Edit:
Und wieder ein typisches Beispiel warum es so schwer ist Leuten zu helfen, welche die Frage (Aufgabenstellung) in eigenen Worten formulieren... und ich immer wieder meinen Freunden sagen, sie mögen doch bitte die Aufgabe 1:1 schreiben. Die Leute fangen immer schon an selbst zu interpretieren.
In der Aufgabenstellung wird von Initialwerten gesprochen und nicht von Initialisierungen... und die Initalwerte der Klasse werden i.d.R. dem (bzw einem) Konstruktor übergeben - und wenn sie fehlen bekommen sie halt Standardwerte.
Hy, Besten Dank! Das ist auch für mich mal verständlich. Mit Klassen, Konstrukotren etc. habe ich bisher noch gar net gearbeitet, drum habe ich da gar nichts verstanden.
Besten Dank für den guten Einstieg!
Zuletzt bearbeitet:
Fatal Error
Lt. Junior Grade
- Registriert
- Jan. 2009
- Beiträge
- 294
bin jetzt vielleicht etwas pingelig, aber den code würde ich etwas anders schreiben. in java gibt es zum beispiel keine int main();
außerdem, find zumindest ich, dass es sinnvoller ist, aus den kontruktoren die weniger parameter bekommen, den kontruktor mit den meisten parametern aufzurufen. weil es sein kann dass noch mehr als eine instanzierung gemacht wird.
außerdem, find zumindest ich, dass es sinnvoller ist, aus den kontruktoren die weniger parameter bekommen, den kontruktor mit den meisten parametern aufzurufen. weil es sein kann dass noch mehr als eine instanzierung gemacht wird.
Code:
class Bruch
private int z;
private int n;
// Konstruktor für Bruch ohne Parameter, initalisiert 0/1
public Bruch()
{
this(0, 1);
}
// Konstruktor für Bruch mit ganzer Zahl als Parameter
public Bruch(int wert)
{
this(wert, 1);
}
// Konstruktor für Bruch mit Zähler und Nenner als Parameter
public Bruch(int zaehler, int nenner)
{
z = zaehler;
n = nenner;
System.out.println("Diese Ausgabe erfolgt nach dem Aufruf von jedem der 3 Konstruktoren!");
}
}
class Program
{
public static void main(String[] args)
{
Bruch b1 = new Bruch(); // = Wert 0
Bruch b2 = new Bruch(42); // = Wert 42
Bruch b3 = new Bruch(1, 3); // = Wert 1/3 = 0,33333...
}
}
Zuletzt bearbeitet:
Hier einmal ein kleiner Praxistipp zum Initialisieren von Variablen:
In modernen Programmiersprachen wie Java/C#/VB.NET werden Variablen üblicherweise mit 0/false/null initialisiert, wenn man nichts explizit angibt. Es empfiehlt sich hier folgende Konvention:
int i; //Bedeutet man deklariert die Variable i. i hat noch keinen gültigen Wert. Dieser wird erst später eingefügt z.B. im Konstruktor oder durch eine Berechnung und wird erst nachher verwendet
int i=0; //Bedeutet man deklariert die Variable i und diese bekommt den Wert 0. Dieser wird eventuell später im Programm auch abgefragt.
Die zwei Zeilen tun exakt dasselbe, aber man kann anhand der Unterschiedlichen Schreibweise gleich die Intention des Programmierers erkennen. Wenn dort nur "int i" steht und später wird auf den Wert lesend zugegriffen, dann kann man davon ausgehen, dass hier ein Fehler vorliegt, auch wenn dieser im konkreten Fall keinen Absturz produziert.
In modernen Programmiersprachen wie Java/C#/VB.NET werden Variablen üblicherweise mit 0/false/null initialisiert, wenn man nichts explizit angibt. Es empfiehlt sich hier folgende Konvention:
int i; //Bedeutet man deklariert die Variable i. i hat noch keinen gültigen Wert. Dieser wird erst später eingefügt z.B. im Konstruktor oder durch eine Berechnung und wird erst nachher verwendet
int i=0; //Bedeutet man deklariert die Variable i und diese bekommt den Wert 0. Dieser wird eventuell später im Programm auch abgefragt.
Die zwei Zeilen tun exakt dasselbe, aber man kann anhand der Unterschiedlichen Schreibweise gleich die Intention des Programmierers erkennen. Wenn dort nur "int i" steht und später wird auf den Wert lesend zugegriffen, dann kann man davon ausgehen, dass hier ein Fehler vorliegt, auch wenn dieser im konkreten Fall keinen Absturz produziert.
1
1668mib
Gast
@Fatal Error: Ich nahm einfach an, dass der gesunde Menschenverstand sagt, dass die Main-Funktion exemplarisch zu sehen ist... genauso auch meine ganze Klasse.
Dass deine Konstruktoren stilistisch besser sind ist klar, aber ich wollte den Code eigentlich eher so schlicht und einfach verständlich halten wie möglich...
Stil kommt mit der Zeit.
Und wenn du schon über Stil diskutierst, dann solltest du aber das println durch einen Kommentar ersetzen...
Dass deine Konstruktoren stilistisch besser sind ist klar, aber ich wollte den Code eigentlich eher so schlicht und einfach verständlich halten wie möglich...
Stil kommt mit der Zeit.
Und wenn du schon über Stil diskutierst, dann solltest du aber das println durch einen Kommentar ersetzen...
Zuletzt bearbeitet:
Ähnliche Themen
- Antworten
- 28
- Aufrufe
- 1.788