Erste Schritte Aufgabe - Geht das auch schneller ?

Gonnex

Mitglied
Hallo,

ich habe eine kurze Frage. Ich soll bei einer Aufgabe eine Zahl im Intervall [1......365] einlesen. Diese soll als Tag im Jahr interpretiert werden, und als Tag/Monat ausgegeben werden. Sprich Tag 150 im Jahr wäre der 30. Mai.

Erste Aufgabe war das Ganze mit If-Anweisungen, soweit so gut.
Java:
package Aufgabenblatt3;

import java.util.Scanner;

public class Aufgabe3i1withIf {

	public static void main(String[] args) {

		int input = new Scanner(System.in).nextInt();
		if (input <= 31) {
			System.out.println(input + ". Januar");
		} else {
			if (input > 31 & input <= 59) {
				System.out.println(input - 31 + ". Februar");
			} else {
				if (input > 59 & input <= 90) {
					System.out.println(input - 59 + ". März");
				} else {
					if (input > 90 & input <= 120) {
						System.out.println(input - 90 + ". April");
					} else {
						if (input > 120 & input <= 150) {
							System.out.println(input - 120 + ". Mai");
						} else {
							if (input > 150 & input <= 181) {
								System.out.println(input - 150 + ". Juni");
							} else {
								if (input > 181 & input <= 212) {
									System.out.println(input - 181 + ". Juli");
								} else {
									if (input > 212 & input <= 243) {
										System.out.println(input - 212 + ". August");
									}
								}
							}
						}
					} // Kann weitergeführt werden bis Dezember
				}

			}
		}
	}
}

Nun soll das Ganze mit einem Feld(Array) gemacht werden. Am Ende soll man review halten, was sich den hier nun besser eignet.

Java:
package Aufgabenblatt3;

public class Aufgabe3i1withArray {

	public static void main(String[] args) {

		String[] daysOfYear = new String[365];
		daysOfYear[0] = new String("0");
		daysOfYear[1] = new String("1. Januar");
		daysOfYear[2] = new String("2. Januar");
		daysOfYear[32] = new String("1. Februar");

	}
}

In dieser Richtung hab ich mir das Ganze mal vorgestellt. Nun ist die Frage, ist das so die Lösung, oder geht das noch schneller ? Ich hab auch eine for-Schleife bedacht, aber da kann ich ja nicht einzelne Monate mit unterschiedlicher Tagesanzahl zuweisen oder ?
Außerdem wie könnte ich das Ganze so ausgeben ? Sprich mit der Eingabezahl 120 mit der Komponente im Array verbinden und den darauf gespeicherten String ausgeben ?

Vielen Danl im Voraus,
Gonnex
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
[ot]Für Java Code bitte die
Java:
-Tags verwenden, danke :)[/ot]

[quote="Gonnex, post: 1038957"]
[code=Java]
		int input = new Scanner(System.in).nextInt();
		if (input <= 31) {
			System.out.println(input + ". Januar");
		} else {
			if (input > 31 & input <= 59) {
				System.out.println(input - 31 + ". Februar");
			} else {
				if (input > 59 & input <= 90) {
					System.out.println(input - 59 + ". März");
				} else {
					if (input > 90 & input <= 120) {
						System.out.println(input - 90 + ". April");
					} else {
						if (input > 120 & input <= 150) {
							System.out.println(input - 120 + ". Mai");
						} else {
							if (input > 150 & input <= 181) {
								System.out.println(input - 150 + ". Juni");
							} else {
								if (input > 181 & input <= 212) {
									System.out.println(input - 181 + ". Juli");
								} else {
									if (input > 212 & input <= 243) {
										System.out.println(input - 212 + ". August");
									}
								}
[/QUOTE]

Tipp: drehe die Reihenfolge deiner ifs um (also Dezember zuerst prüfen usw.) ;-)
Dann musst du nur prüfen ob "input" > X ist, wenn nicht ist es ein Tag des Monats davor usw.
Damit ersparst du dir die Prüfung ob "input" > X und "input"<= Y ist.

Ohne genaue Angabe zur Aufgabe kann ich zu der Variante mit dem Array nicht viel sagen, es schaut aber nicht richtig aus.
 

Gonnex

Mitglied
Ok, danke.

Die Aufgabenstellung ist die Selbe für die mit der If-Anweisung. Sprich
Zahl zwischen 1-365 eingeben, und die Ausgabe soll dann Tag. Monat sein.
 

Thallius

Top Contributor
Ich würde das mit dem Array anders machen....

Java:
int daysOfMonth[]={31,27,31,30,31,30,31,31,30,31,30,31};
String monthNames[]={"Januar","Februar".....

int numberOfDays=150 // diese mit Scanner einlesen. 150 ist nur Beispiel
int monthIndex=0; // starten mit Januar
while(monthIndex<12 && numberOfDays>daysOfMonth[monthIndex])
{
    numberOfDays-=daysOfMonth[monthIndex]; 
    monthIndex++;
}
if(numberofDays>=0)
    System.out.println("Zahl ist größer als 365");
else
    System.out.println(numberOfDays+"."+monthName[monthIndex]);

Gruß

Claus
 
Zuletzt bearbeitet:

Joose

Top Contributor
Erstelle einfach ein int[] mit der Länge 12.
Für jedes Monat trägst du den Grenzwert X ein (siehe mein Beitrag oben).
Sprich bei Index 0 speicherst du 31, Index 1 -> 59, usw.

Dieses Array gehst du dann hinten nach vorne durch und prüfst ob dein eingebener Input > als der aktuelle Wert aus dem Array ist
wenn nein -> schleife geht weiter
wenn ja -> hast du das Monat gefunden (den Namen könntest du dir über ein 2.Array holen), für den Tag des Monats musst du nur noch den Input um den Grenzwert X reduzieren

Also die Variante mit dem Array soll eigentlich nur dafür sorgen, dass statt 12x if/else es nur 1x geschrieben wird.

@Thallius
Bei deiner Variante hat sich ein Fehler eingeschlichen ;)
Probiere mal statt dem Wert 150 den Wert 29 (29.Januar), da würde die Ausgabe "Zahl ist größer als 365" folgen
Bzw. bei jedem Wert wird diese Ausgabe kommen weil "numberOfDays" immer >=0 bleiben wird.
 
Zuletzt bearbeitet:

Gonnex

Mitglied
Danke für den Ansatz, und danke auch Thallius. Ich denke damit sollte ich es hinbekommen, wenn nicht melde ich mich wieder.

Gonnex
 

Thallius

Top Contributor
@Thallius
Bei deiner Variante hat sich ein Fehler eingeschlichen ;)
Probiere mal statt dem Wert 150 den Wert 29 (29.Januar), da würde die Ausgabe "Zahl ist größer als 365" folgen
Bzw. bei jedem Wert wird diese Ausgabe kommen weil "numberOfDays" immer >=0 bleiben wird.

Ach menno, jetzt mache ich extra einen kleinen Fehler rein damit der TO selber denken muss und du verräts ihne einfach :D

Gruß

Claus
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Objekt Array Aufgabe mit Busdatenbank Allgemeine Java-Themen 2
O Test schreiben mit Äquivalenzklassen (Aufgabe Prüfung) Allgemeine Java-Themen 9
OnDemand Erstellen von Quartz Jobs pro Aufgabe oder zusammenfassen Allgemeine Java-Themen 7
M Bräuchte Hilfe bei der Aufgabe Allgemeine Java-Themen 1
parrot Array Aufgabe Allgemeine Java-Themen 3
parrot Rekursion Aufgabe Allgemeine Java-Themen 12
S Aufgabe erwünscht Allgemeine Java-Themen 7
R Statistische Methoden (Mathematik) Aufgabe Allgemeine Java-Themen 9
M Polymorphie Aufgabe Allgemeine Java-Themen 15
H Stack mit bestimmter Aufgabe Allgemeine Java-Themen 62
E Java Aufgabe WaWi01 Allgemeine Java-Themen 7
D Methoden Java-Aufgabe Allgemeine Java-Themen 2
R Java-Code für folgene Aufgabe? Allgemeine Java-Themen 8
G Methoden BMI -Wert Aufgabe(Methoden) Allgemeine Java-Themen 4
R Was los mit dieser Aufgabe? Arrays mit Schachbrettmustern? Allgemeine Java-Themen 10
vandread Kleine Generics Aufgabe aus einer Prüfung... wie ist das gemeint? Allgemeine Java-Themen 6
D Aufgabe: Schnittstelle und Proxy implementieren Allgemeine Java-Themen 2
D BlueJ - Aufgabe 12 namens Traktor Allgemeine Java-Themen 7
D OOP Mustererkennungs Aufgabe Allgemeine Java-Themen 9
pg1337 Firmen-aufgabe Allgemeine Java-Themen 10
B Konkrete Aufgabe Allgemeine Java-Themen 9
S Textverständnis einer Aufgabe Allgemeine Java-Themen 2
F Frage zu Aufgabe Allgemeine Java-Themen 5
P Java-Security-Aufgabe gesucht Allgemeine Java-Themen 2
M Brauche einen Tipp, bei einer Aufgabe ! Allgemeine Java-Themen 3
I Aufgabe: Aufwandsabschätzung Allgemeine Java-Themen 7
HolyFUT Best Practice Wie geht man mit "schlechten" Projekten um? Allgemeine Java-Themen 7
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
F 2 JsonArray vergleichen, geht es auch einfacher ? Allgemeine Java-Themen 3
LimDul Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
M Test geht auf Travis und mit Github Action schief aber nicht lokal Allgemeine Java-Themen 3
M Console geht nicht auf (Windows 10) Allgemeine Java-Themen 3
W Enumeration ein Array/List als Eigenschaft mitgeben - warum geht das nicht? Allgemeine Java-Themen 0
P Erste Schritte HauptFrame geht nicht Allgemeine Java-Themen 7
L Applet Applet zu JavaWebStart migrieren - simples sample geht nicht Allgemeine Java-Themen 2
KeVoZ_ Java Mail senden - geht nicht Allgemeine Java-Themen 4
K API - Wie geht das? Allgemeine Java-Themen 2
D Klassenübergreifender Befehl geht nicht Allgemeine Java-Themen 10
X Datentypen Byte geht nicht höher als 126 auch nicht mit casten? Allgemeine Java-Themen 22
J Umwandeln von URL zu File und danach kopieren geht nicht Allgemeine Java-Themen 1
M JUnit Serverseitig? Wie geht sowas? Allgemeine Java-Themen 2
E JavaFX String-Wert geht "verloren" - ratlos Allgemeine Java-Themen 2
B Fehler beim Auslesen von Einstellungen. Zwei ähnliche Blöcke, nur eins geht. Allgemeine Java-Themen 5
H Unicode ausgeben ohne Umwandlung - geht das? Allgemeine Java-Themen 3
F Java Anwendung Remote starten geht nicht Allgemeine Java-Themen 0
M Eingabe von Arrays geht über gewünschte Anzahl hinaus Allgemeine Java-Themen 2
K print() geht nicht ohne println() Allgemeine Java-Themen 3
V 2D-Grafik BufferdImage aus gif Datei in Jar erzeugen geht nicht. Allgemeine Java-Themen 6
Fl4sh1 Autovervollständigungfenster geht nicht (eclipse) Allgemeine Java-Themen 10
P Absatz im String / Excel / /n geht nicht Allgemeine Java-Themen 2
Z Java geht nicht im Browser Allgemeine Java-Themen 5
J Laden von JAR Files geht ohne ADMIN Rechte sehr langsam Allgemeine Java-Themen 6
B Keylistener geht nicht Allgemeine Java-Themen 9
R Wie geht man mit CachedRowSet um Allgemeine Java-Themen 2
I Downloaden einer Datei geht nicht? Allgemeine Java-Themen 16
P Input/Output Ordner löschen --> geht nicht Datei --> Ja Allgemeine Java-Themen 6
G JTable mit Keylistener geht nicht Allgemeine Java-Themen 3
C Zugriff auf private Methode per reflection geht nicht mehr Allgemeine Java-Themen 3
R Geht das? JRE 1.4 global, 1.6.20 nur für eine Anwendung? Allgemeine Java-Themen 9
ruutaiokwu junit mit annotations geht nicht? Allgemeine Java-Themen 5
F externe module. geht das in Java? Allgemeine Java-Themen 3
N Java geht nicht mehr zu löschen Allgemeine Java-Themen 5
M XML-Datei geht bei voller Festplatte verloren Allgemeine Java-Themen 4
DStrohma Daten in JAR speichern geht nicht?? Allgemeine Java-Themen 22
S Viele Bilder -> Speicher ausgelastet? / (De-)serialisierung geht nicht mehr richtig Allgemeine Java-Themen 8
B Komplettes Projekt als UML Diagramm mit eUML...geht das? Allgemeine Java-Themen 10
N List<? implements "Interface"> geht nicht Allgemeine Java-Themen 13
C Methodenkopf: Zu was wenns auch ohne geht? Allgemeine Java-Themen 3
A Javakonsolenfenster geht gleich wieder zu Allgemeine Java-Themen 6
M Übergebener String bearbeiten geht nicht. Allgemeine Java-Themen 4
D iText und Table.setTableFitsPage(); geht nicht Allgemeine Java-Themen 12
E Cipher geht mal und mal nicht Allgemeine Java-Themen 3
G Datei löschen nach kopieren geht nicht Allgemeine Java-Themen 5
A Standalone geht - JSP u. Bean nicht Allgemeine Java-Themen 6
D Jar auf Mac starten geht nicht Allgemeine Java-Themen 3
M Klasse Desktop geht nicht mehr (EXCEPTION_ACCESS_VIOLATION) Allgemeine Java-Themen 9
M ireport (Jasper Report) geht nur auf meinen Rechner Allgemeine Java-Themen 3
S Rechner formatiert - nichts geht mehr. Allgemeine Java-Themen 2
S Apache Commons Net geht nicht Allgemeine Java-Themen 5
zilti Wieso geht der StreamReader/Writer nicht? Allgemeine Java-Themen 5
T Geht das vielleicht noch einfacher? Allgemeine Java-Themen 7
M commapi unter vista, geht das? Allgemeine Java-Themen 4
V JavaProgramm von Konsole starten geht nichtmehr Allgemeine Java-Themen 4
V JVM OutofMemory Linux geht, windows nicht Allgemeine Java-Themen 3
Chris_1980 Geht das nicht auch einfacher (Arcanoid Multiball) Allgemeine Java-Themen 2
H Vector<T>[] vecs = new Vector<T>[10]; geht nicht Allgemeine Java-Themen 2
D Geht es auch schneller doppelte Einträge zu löschen? Allgemeine Java-Themen 23
K java geht beim chatten nicht? Allgemeine Java-Themen 2
G Mit Java auf windows 2003 userrechte zugreifen geht sowas ? Allgemeine Java-Themen 2
R Drag und Drop von externen Files geht nur als Application Allgemeine Java-Themen 2
O Input stream geht net Allgemeine Java-Themen 2
J Threads, Doppelpufferung --> Beispiel gefunden, geht net Allgemeine Java-Themen 16
P rar.exe und variablenparameter als String geht net Allgemeine Java-Themen 4
G Da Jikes nicht mit java 5 geht, gibt es eine andere. Allgemeine Java-Themen 4
TheJavaKid warum geht das nicht? Allgemeine Java-Themen 14
G setLastModified geht nicht Allgemeine Java-Themen 8
H Ausführungsgeschwindigkeit reduzieren. Geht das? .. Allgemeine Java-Themen 21
G parseInt geht nicht Allgemeine Java-Themen 10
K Mit Java kleine Freeware Programme erstellen. Geht das? Allgemeine Java-Themen 16

Ähnliche Java Themen

Neue Themen


Oben