Java Wertzuweisung (2. Werte ohne If)

passy95

Ensign
Registriert
Apr. 2011
Beiträge
252
Ich würde gerne der Variablen M den 2 Werte zuweisen allerdings sollen andere Werte übernommen werden wie geht das ohne if?

M= 1 =13
M= 2 =14

Hier die Werte die benutzt werden sollen, die ersten Zahlen stehen für die Eingabe Werte.

Ich hoffe ihr könnt mir weiter helfen!

Lg passy95
 
Zuletzt bearbeitet:
Hallo,
wie meinst du das genau mit "übernommen werden"? Soll also in deinem Beispiel die Variable M am Ende zwei Werte (13 und 14) aufweisen?
 
Was willst du genau?

Statt if geht case, wenn du als Bedingung feste Werte hast.
 
Ich darf leider keine if und kein else verwenden.

Ich berechne über die Zellerische Formel den Wochentag nun ist die Bonus Aufgabe die 13 bzw. 14 durch 1 bzw. 2 zu ersetzen.

13=Januar
14=Februar



Ich habe die Variable M gebe im Moment 13 für den Januar ein würde nun durch Zuweisung "sagen" 1=13 und 2=14.

Ich hoffe ihr versteht mich jetzt besser :)
 
Zuletzt bearbeitet:
weder if noch case ist eine Schleife.
 
Ehrlich gesagt verstehe ich (auch) nicht was der TE von "uns" möchte? Was möchtest du was zuweisen?

Und wie Nilson schon sagt, if else sind keine Schleifen und auch case ebenso wenig.
 
hmmm... M mod 12 ?!
Aus 13 wird eine 1 und aus 14 eine 2.
 
Ich würd das ja mit Modulo machen:

Beispiel:
M = 1; //M == Jänner -> TRUE
M = 13 % 12 <=> M = 1; //M == Jänner -> TRUE
 
OK im meinte eigentlich ne if und else Anweisung.

Ich kopiere jetzt meine Programm-Code hier rein und versuche es euch so zu erklären.
Ich muss 13 als Januar eingeben und 14 als Februar nun will ich 13 durch 1 ersetzen und 14 durch 2. Allerdings muss die Berechnung weiterhin mit 13 und 14 erfolgen.




class P2Wochentag {
/**
* Berechnet den Wochentag zu einem gegebenen Kalenderdatum.
* Verwendet nur int-Arithmetik, keine Kontrollstrukturen.
* Eingabe Tag (1..31), Monat (3..14), Jahr (ccyy) bei Bonus Monat (1..12)
* Ausgabe: Wochentag (1 = Sonntag bis 0 = Samstag)
*/
public static void main(final String[] args) {
int d = 16; //6 bei Bonus 6
int m = 10; //14 bei Bonus 2
int jahr = 2014%100;
int c =2014/100;


int w=(d+(((m+1)*26)/10)+c+(c/4)+(jahr/4)-2*jahr)%7; //Wikipedia Formel

System.out.println(w);
System.out.println("1=Sonntag,2=Montag,3=Dienstag,4=Mittwoch,5=Donnerstag,6=Freitag,0=Samstag");
}
}
 
Warum und wo willst du die 13/14 durch 1/2 ersetzen?

Edit:

Darfst du methoden benutzen? Damit könntest du lokale Variablen benutzen.
 
Zuletzt bearbeitet:
Hades85 schrieb:
Warum und wo willst du die 13/14 durch 1/2 ersetzen?

Bei m es soll aber mit 13 bzw 14 gerechnet werden.
 
Darfst du nun eine if-else Anweisung verwenden?

// Januar und Februar als 13. bzw. 14. Monatdie restlichen Monate bleiben gleich
if(monat < 3) {
monat = monat + 12;
jahr -= 1;
}

ANsonsten...
switch(monat){
case 1: monat = 13; jahr -= 1; break;
case 2: monat = 14; jahr -= 1; break;
}


edit:
Als Hinweis, wenn du Hilfe bei deinem Code benötigt, dann BITTE mit gescheiter Variablen Bezeichnung und Kommentare... Das wird DIR auch mehr helfen als das kryptische da oben..
 
passy95 schrieb:
Bei m es soll aber mit 13 bzw 14 gerechnet werden.

Ich verstehe immer noch nicht was du mit 1/2 machen willst, ausser dass du die ersetzen willst. Aber für mich liest sich das ganze so, als müsstest du die variable m an eine Methode übergeben, da kannst du dann ersetzen wie du fröhlich bist, ohne die 13/14 zu verändern. Setzt aber voraus dass du eine Methode anwenden darfst.

Mal abgesehen davon, dass ich die Methodik die euer Lehrer benutzt um euch Java beizubringen sehr fragwürdig finde. Was soll der Schwachsinn mit der Formel aus Wiki, die nur dazu dient kopiert zu werden und nichts als nur unübersichtlich wirkt.
 
if-else Anweisung darf ich leider nicht verwenden ebenso wie switch-Anweisungen.

Ich habe den Code geändert leider funktioniert der Code nicht mit Tagen mit "6" da der Tag um eins nach hinten verschoben wird.

class P2Wochentag {

public static void main(final String[] args) {
int q = 28; //6 bei Bonus 6
int m = 10; //14 bei Bonus 2
int jahr = 2014; //Jahreszahl bitte eingeben
int K = jahr%100; // K= letzten zwei stellen des Jahres
int J = jahr/100; // j=ersten zwei stellen des Jahres


int w=(q+(((m+1)*26)/10)+K+(K/4)+(J/4)-2*J)%7; //Wikipedia Formel

System.out.println(w);
System.out.println("1=Sonntag,2=Montag,3=Dienstag,4=Mittwoch,5=Donnerstag,6=Freitag,0=Samstag");
}
}
 
@passy95, immer noch, darfst du Methoden benutzen?

Und auf welcher Seite ist die Aufgabe?Bzw. hast du das Buch dazu? Oder ist das eine Aufgabe aus der Schule?
 
Hades85 schrieb:
Was soll der Schwachsinn mit der Formel aus Wiki, die nur dazu dient kopiert zu werden und nichts als nur unübersichtlich wirkt.

Der Kommentar ist für den Korrektor, da ich eine andere Formel verwendet habe als die Vorgegebene.

Hades85 schrieb:
@passy95, immer noch, darfst du Methoden benutzen?

Und auf welcher Seite ist die Aufgabe?Bzw. hast du das Buch dazu? Oder ist das eine Aufgabe aus der Schule?

Mit der Methode bin ich mir nicht sicher.

Die Aufgabe stammt aus der Hochschule und stammt aus folgendem Buch:
Das Java-Praktikum, dpunkt Verlag 2008, ISBN 978-3-89864-513-3
Aufgabe: Datumsarithmetik
Entwickelt mit: Sun Java 6 SE Development Kit
 
Zuletzt bearbeitet:
Das klingt für mich nach einem klassischen Fall für den ternären Operator. Hat Java kein "?:"
 
Zurück
Oben