Java: Methoden Zahlenreihen?
public static void main(String[] args) {
// was soll ich hier in der Main rein schreiben damit ich die Methoden aufrufen kann?
}
public static void plusreihe(??) {
int startwert = 2;
int reihe = 5;
for (int i = 1; i <= reihe; i++) {
System.out.println(i+" ");
}
public static void malreihe(??){
int startwert = 2;
int reihe = 5;
for (int i = 1; i <= reihe; i++)
{
System.out.print(startwert * i + " ");
}}
Bei hochzählen wird 4 8 16 32 64 ausgegeben,
es muss 2 4 8 16 32 rauskommen, wo muss ich was ändern?
public static void hochreihe(??)
{
int startwert = 2;
int reihe = 5;
for (int i = 1; i <= reihe; i++)
{
System.out.println(startwert = startwert 2); }}}}
Schreiben Sie abschließend noch eine vierte Methode „zahlenReihe“, die den Startwert, die Reihenlängt und ein Zeichen entgegennimmt, welches angibt, welche Reihe ausgegeben werden soll: plusReihe (+), malReihe (), hochReihe (^). Lassen Sie den Benutzer Startwert, Reihenlänge und Zeichen in der main-Methode eingeben und verwenden Sie die zahlenReihe-Methode, um die jeweilige Zahlenreihe auszugeben.
Soll ich das mit Scanner machen und danach die mit + * ^ verbinden? Aber wie soll ich das machen?
2 Antworten
startwert und laenge ("reihenlaenge") sollen der Methode übergeben werden. Dazu schreibst du die Variablendeklarationen in die Klammern:
public static dingsreihe(int startwert, int laenge) {
// tu was
}
Dabei sind startwert und laenge innerhalb der Methode konstant. (Du scheinst startwert zu ändern, das passt nicht zum Namen.)
public static dingsreihe(int startwert, int laenge) {
int aktuellerWert = startwert;
for (int i = 1; i <= laenge; ++i) {
// Ausgabe aktuellerWert
aktuellerWert = aktuellerWert /* +*^ Zahl */; // *nach* der Ausgabe, damit startwert selbst auch noch ausgegeben wird
}
}
Für die Auswahl des Rechenzeichens - kennt ihr schon switch-case? Sonst mehrere if:
public static void zahlenReihe(int startwert, int laenge, char operator) {
if (operator == '+') {
plusReihe(startwert, laenge);
} else if (operator == '*') {
// malReihe...
} else if (operator == '^') {
// hochReihe...
} else { // "default"-Fall
// Ausgabe "unbekannter Operator '" + operator.toString() + "': erlaubt sind '+', '*', '^'"
}
}
Hier könnte man die geschweiften Klammern um den einen Befehl nach dem jeweiligen if auch weglassen, aber nach ein paar Jahrzehnten Erfahrung weiß ich, dass es einfacher ist, jedesmal einfach Klammern zu setzen als immer wieder nachdenken zu müssen, ob es wirklich genau 1 Befehl ist, zu welchem if ein else denn nun gehört und später beim Testen, wo man denn diesmal schon wieder was übersehen hat.
Außerdem hab ich mir angewöhnt, grundsätzlich einen "default"-Fall zu berücksichtigen, und wenn nicht, in einem Kommentar dazuzuschreiben, wieso man wirklich alle Fälle berücksichtigt hat. (Außer bei einer enum, aber da müsste ich prüfen, ob C#/Java inzwischen begriffen hat, dass man bei vollständigem Abgrasen aller enum-Bestandteile nun wirklich keinen default-Fall mehr braucht [/rant])
Warum hat du Fragezeichen bei den Parametern für die Methoden? Einfach leerlassen sollte gehen in dem Fall, benutzt ja keine Parameter.
plusreihe();
Das reicht schon um die Methode aufzurufen.
Weiß nicht wozu du einen Scanner willst.
@jort93 wegen den virte methode, wie soll "Lassen Sie den Benutzer Startwert, Reihenlänge und Zeichen in der main-Methode eingeben und verwenden Sie die zahlenReihe-Methode, um die jeweilige Zahlenreihe auszugeben." dies machen?