|
You last visited: Today at 17:22
Advertisement
Frage zu Anfänger Java Übungsaufgabe (Arrays)
Discussion on Frage zu Anfänger Java Übungsaufgabe (Arrays) within the Java forum part of the Coders Den category.
11/28/2016, 18:02
|
#1
|
elite*gold: 44
Join Date: Nov 2007
Posts: 12,864
Received Thanks: 4,330
|
Frage zu Anfänger Java Übungsaufgabe (Arrays)
Hi, hab hier ne Übung zu arrays und mir fehlt leider grade der Ansatz wie ich das anstellen soll... Haben gerade erst mit Arrays angefangen, bitte Rücksicht für mein Unwissen
Was Arrays sind konnte ich mithilfe des Skripts zwar nachvollziehen, einen Ansatz für die Aufgabe finde ich leider gerade trotzdem nicht. Kann jemand weiterhelfen oder zumindest ein paar Hinweise geben?
Danke im Vorraus.
(Nein das sind keine Hausaufgaben, ich würde nur gerne vor nächster Woche wissen wie ich das löse.)
|
|
|
11/28/2016, 18:11
|
#2
|
elite*gold: 131
Join Date: Sep 2009
Posts: 2,513
Received Thanks: 760
|
Da Java nicht so... mein Gebiet ist, hab ichs mal gegoogelt und tada eine (hoffentlich) brauchbare Lösung gefunden.
Wichtig: Google ist dein bester Freund
#FaiL'
|
|
|
11/29/2016, 00:18
|
#3
|
elite*gold: 138
Join Date: Apr 2012
Posts: 3,494
Received Thanks: 1,769
|
Der Ansatz ist durch int[] arr gegeben. Zuerst würde ich schauen, ob das Jahr ein Schaltjahr ist. Wenn ja, arr[1] einfach um 1 erhöhen, da der Februar dann einen Tag mehr hat. Dann in einer for-Schleife die Tage der Monate die bereits um sind alle aufsummieren (z.B. wenn du den 29. November 2016 berechnen sollst, alles von Januar bis Oktober aufsummieren). Zuletzt noch die Tage addieren, die du als Parameter bekommen hast
|
|
|
11/29/2016, 00:23
|
#4
|
elite*gold: 86
Join Date: Feb 2009
Posts: 370
Received Thanks: 84
|
Theoretisch könntest du nach der Schaltjahr-Überprüfung auch ermitteln, anhand einer if-Abfrage, von welcher Richtung aus, also Jahresanfang oder Jahresende, man effizienter rechnet. Im Beispiel von Moneypulation wäre die Berechnung auf Basis des Jahresende effizienter.
|
|
|
11/29/2016, 14:00
|
#5
|
elite*gold: 44
Join Date: Nov 2007
Posts: 12,864
Received Thanks: 4,330
|
Quote:
Originally Posted by Moneypulation
Dann in einer for-Schleife die Tage der Monate die bereits um sind alle aufsummieren (z.B. wenn du den 29. November 2016 berechnen sollst, alles von Januar bis Oktober aufsummieren)
|
Sonst ist eigentlich alles klar, wie for-Schleifen funktionieren verstehe ich in der Theorie auch, aber irgendwie scheiterts hier... Kannst du vll mit der konkreten Zeile aushelfen? Wie summiere ich alle Werte von den Arrays [0] bis [eingegebener monat-1] auf? (Es geht mir wirklich nicht drum das von euch lösen zu lassen, aber dann hätte ich ein Beispiel und kanns mir für die anderen Aufgaben selbst erklären)
Danke für die Antworten!
|
|
|
11/29/2016, 14:09
|
#6
|
elite*gold: 86
Join Date: Feb 2009
Posts: 370
Received Thanks: 84
|
Also dein Array beinhaltet ja die Tage der Monate 1 - 12. Da Arrays bei 0 anfangen, hast du die Indizes 0 - 11.
Nehmen wir an, wir haben Monat Mai, also den 5. Monat eines Jahres. Dann musst du bis zum Monat 4 zählen, da du bis dahin jeweils komplette Monate hast.
Um dir nun die Gesamttage zu merken, benötigst du eine Variable außerhalb der for-Schleife, die wir mit der Anzahl der Tagen des laufenden Monats Mai initialisieren.
Code:
short daysTotal = dateDays;
// dateMonth (= 5) - 2 = 3 -> 4 (volle) Monate
for(byte month = 0; month <= (dateMonth - 2); month++) {
daysTotal += arr[month];
}
Du musst aufgrund der Verschiebung, also dass Arrays bei 0, Monate aber bei 1 (= Januar) beginnen, dann jeweils 1 abziehen.
edit:
Du kannst bei der For-Schleife, wie ich zuvor schrieb, ermitteln, von welcher Seite du weniger Schleifendurchläufe benötigst (was aber in dem Fall Mikrooptimierung wäre). In dem Fall würdest du mit month = 11 anfangen und dekrementieren (month--), solange month >= ist.
|
|
|
11/29/2016, 14:22
|
#7
|
elite*gold: 44
Join Date: Nov 2007
Posts: 12,864
Received Thanks: 4,330
|
Quote:
Originally Posted by Sycrog
Also dein Array beinhaltet ja die Tage der Monate 1 - 12. Da Arrays bei 0 anfangen, hast du die Indizes 0 - 11.
Nehmen wir an, wir haben Monat Mai, also den 5. Monat eines Jahres. Dann musst du bis zum Monat 4 zählen, da du bis dahin jeweils komplette Monate hast.
Um dir nun die Gesamttage zu merken, benötigst du eine Variable außerhalb der for-Schleife, die wir mit der Anzahl der Tagen des laufenden Monats Mai initialisieren.
Code:
int daysTotal = dateDays;
// dateMonth (= 5) - 2 = 3 -> 4 (volle) Monate
for(int month = 0; month <= (dateMonth - 2); month++) {
daysTotal += arr[month];
}
Du musst aufgrund der Verschiebung, also dass Arrays bei 0, Monate aber bei 1 (= Januar) beginnen, dann jeweils 1 abziehen.
edit:
Du kannst bei der For-Schleife, wie ich zuvor schrieb, ermitteln, von welcher Seite du weniger Schleifendurchläufe benötigst (was aber in dem Fall Mikrooptimierung wäre). In dem Fall würdest du mit month = 11 anfangen und dekrementieren (month--), solange month >= ist.
|
Müsste es nicht (dateMonth - 1) sein?
Falls ja, hab ichs verstanden und das ganze zum laufen gebracht. Spuckt auch die richtige Tageszahl aus. Danke für die ausführliche Hilfe! Den edit mit der Optimierung ist auch verständlich, werd das gleich noch ausprobieren.
|
|
|
11/29/2016, 14:28
|
#8
|
elite*gold: 86
Join Date: Feb 2009
Posts: 370
Received Thanks: 84
|
Im Beispiel haben wir Monat Mai (5). Das heißt, wir ,,schleifen" bis zum Monat April (4), also einen Monat weniger, als dateMonth angibt. Nun fangen Arrays ja bei 0 und nicht bei 1 an, daher müssen wir deswegen nochmal 1 abziehen. Das ergibt in Summe 2 (dateMonth - 2).
Was mir gerade noch einfällt (passend zum Thema Mikrooptimierung):
a) für daysTotal den Datentyp short (16 bit) nehmen
b) für die Schleifenvariable month den Datentyp byte (8 bit) nehmen

ich ergänze das oben mal.
|
|
|
 |
Similar Threads
|
Anyone able to explain me arrays in java? Usage, why, how, when etc.
10/04/2016 - Java - 4 Replies
Topic. I know how to make an array, but how to use it later or express the values inside of it?..
|
[Java] Problem bei Übungsaufgabe
03/12/2013 - General Coding - 2 Replies
Moin moin
Ich bin immoment ein Buch zum Thema Java am lesen
und versuche die Aufgaben im Buch zu lösen. Leider bin ich
immoment an einer Aufgabe die ich selbst nicht lösen kann
und hoffe daher auf eure hilfe.
Die Aufgabenstellung
Erstellen Sie im Projekt JavaUebung03 ein Programm mit dem Namen Schaltjahr. In
einem Eingabefenster soll eine Jahreszahl eingegeben werden. Das Programm soll über
|
Java: Arrays auslesen, speichern und vergleichen?!
09/30/2011 - General Coding - 22 Replies
Hey E*pvpers.
Ich besuche seid Anfang dieses Schuljahres jetzt den InfoLk.
Wir programmieren und werden auch weiterhin vorerst, in Java programmieren und benutzen den Compiler BlueJ wobei das ja eher nebensächlich ist.
Nun zu meinem Problem.
Wir sind angefangen an einem Projekt "Schule" zu arbeiten.
|
[Java] Code-Beispiele für String, Arrays und und...
06/02/2010 - Coding Tutorials - 9 Replies
Joa, da ich Heute meine Informatik Prüfung in der Uni hatte ( und es sollte wohl min. eine 2 raus gekommen sein ) hatte ich Gestern so in ner Stunde einige Code Beispiele für verschiedene Dinge geschrieben. Eins war wie man Strings verarbeiten kann, was man mit Arrays anstellen kann und noch so paar Allgemeine Sachen zur Vererbung und Klassen.
Man sollte das hier nicht unbedingt als Tutorial sehen da ich euch eigentlich hier einfach nur Code reinhau den ihr direkt Ausführen könnt wenn ihr...
|
Hilfe in Info mit Arrays via Java
12/03/2009 - General Coding - 9 Replies
Heho,ich sitz grad hilflos in Info.
Kann mir wer mit dieser Aufgabenstellung helfen?
Berechnen Sie die Fakultät bis 10! und speichern Sie sie in einem Array. (Unter 5! gesprochen "Fünf Fakultät", versteht man als 1*2*3*4*5=120.
Es wird definiert: 0! = 1)
wär nett,
lg
|
All times are GMT +1. The time now is 17:26.
|
|