maximaleAnzahlAnZugriffenProStunde = zugriffeInStunde[i];
stundeMitDerMaximalenAnzahlAnZugriffen = i;
Weil du dir sowohl die Anzahl der Zugriffe und die Stunde in der sie erfolgten, merken musst.Warum 2 int Variablen überhaupt?
/**
* Gib die Anzahl der Zugriffe in den Stunden eines
* Tages nach Stunden sortiert auf der Konsole aus.
* Diese Werte sollten zuerst mit einem Aufruf von
* 'analysiereStundendaten' berechnet werden.
*/
public void stundendatenAusgeben()
{
System.out.println("Stunde: Zugriffe");
for(int stunde = 0; stunde < zugriffeInStunde.length; stunde++) {
System.out.println(stunde + ": " + zugriffeInStunde[stunde]);
}
}
Diese wurde dir beantwortet, aber du hast mit keinem Wort bisher erwähnt ob dir die Antwort klar ist oder nicht.Warum ist zugriffeInStunde ein Array und zugriffeInStunde.lenght ein int?
Anschauen und probieren vermutlich schon, aber ist das nicht von Erfolg gekrönt. Zumindest deuten das in dem screenshot erkennbare großgeschriebene If und das falsch geschriebene "lenght" darauf hin.dann frage ich mich ob dir überhaupt den Code anschaust der schon gegeben ist und probierst ihn zu verstehen
public int aktivsteStunde() {
int maximaleAnzahlAnZugriffenProStunde = 0;
int stundeMitDerMaximalenAnzahlAnZugriffen = -1;
for (int i = 0; i < zugriffeInStunde.length; i++){
if(i > maximaleAnzahlAnZugriffenProStunde){
maximaleAnzahlAnZugriffenProStunde = zugriffeInStunde[i];
stundeMitDerMaximalenAnzahlAnZugriffen = i;
}
} return stundeMitDerMaximalenAnzahlAnZugriffen;
}
nein, deine if-Abfrage ist noch falsch. Du sollst nicht i mit irgendwas vergleichen sondern die Zugriffe in der i-ten Stunde mit der bisherigen maximalen Anzahl an Zugriffen pro StundeIst das jetzt so richtig?
Überprüfe den i-ten Eintrag in zugriffeInStunde
Falls der i-te Eintrag größer ist als maximaleAnzahlAnZugriffenProStunde,
Überprüfe den i-ten Eintrag in zugriffeInStunde
Falls i größer ist als maximaleAnzahlAnZugriffenProStunde,
public int aktivsteStunde() {
int maximaleAnzahlAnZugriffenProStunde = 0;
int stundeMitDerMaximalenAnzahlAnZugriffen = -1;
for (int i = 0; i < zugriffeInStunde.length; i++){
if(zugriffeInStunde[i] > maximaleAnzahlAnZugriffenProStunde){
maximaleAnzahlAnZugriffenProStunde = zugriffeInStunde[i];
stundeMitDerMaximalenAnzahlAnZugriffen = i;
}
} return stundeMitDerMaximalenAnzahlAnZugriffen;
}
Weil du vermutlich gar keine Log-Datei eingelesen hast. Oder eine leere Logdatei oder sonst irgend so ein MistWenn ich die Methode aufrufe, kommt jetzt -1 !
Eine neue Instanz von LogdateiErzeuger erstellen, und dessen Methode erzeugeDatei(String dateiname, int anzahlEintraege) aufrufen. Falls die methode true zurückgibt, eine neue Instanz von ProtokollAuswerter erstellen und den verwendeten Dateinamen als Parameter des ProtokollAuswerter-Konstruktors verwenden. Dann die Methode analysiereStundendaten der ProtokollAuswerter-Instanz aufrufen, und anschliessend aktivsteStunde(). Das Ergebnis notieren. Dann die vom LogdateiErzeuger erzeugte Datei mit einem Texteditor öffnen, und die Auswertung von Hand machen (bei wenigen Logeinträgen sollte das problemlos möglich sein).Wie teste ich, ob die Methode funktioniert?
public int aktivsteStunde() {
int maximaleAnzahlAnZugriffenProStunde = 0;
int stundeMitDerMaximalenAnzahlAnZugriffen = -1;
for (int i = 0; i < zugriffeInStunde.length; i++){
if(zugriffeInStunde[i] > maximaleAnzahlAnZugriffenProStunde){
maximaleAnzahlAnZugriffenProStunde = zugriffeInStunde[i];
stundeMitDerMaximalenAnzahlAnZugriffen = i;
}
} return stundeMitDerMaximalenAnzahlAnZugriffen;
}
zugriffeInStunde[i]
, was ist das für eine Variable? Wie soll man selbst auf die Idee kommen,maximaleAnzahlAnZugriffenProStunde = zugriffeInStunde[i];
stundeMitDerMaximalenAnzahlAnZugriffen = i;
zugriffeInStunde[i]
; und einmal = i?zugriffeInStunde[i]
und i ?public void unterschied(){
int[] irgendwelcheZahlen = {4,7,20,15}; // Deklaration eines int-Arrays
//For Schleife, die die Zählervariable ausgibt
for(int i = 0; i<10; i++){
System.out.println(i);
}
// nach dem Ende der Schleife hast du die Werte 0 - 9 untereinander ausgegeben
//for schleife, die das Array ausgibt
for(int i = 0; i < irgendwelcheZahlen.length; i++){
System.out.println(irgendwelcheZahlen[i]);
}
//Ausgabe untereinander 4,7,15,20
}
String s = "abcd ";
s.length()
?irgendwelcheZahlen.length
und s.length()
)i < irgendwelcheZahlen.length
sein? Und nicht z.B. <=
?irgendwelcheZahlen[i]
? irgendwelcheZahlen[1]
oder irgendwelcheZahlen[2]
machen?irgendwelcheZahlen
, i
, irgendwelcheZahlen[i]
, irgendwelcheZahlen[6]
, int 10
, double 6.5
, String s
aus Aufgabe1?[/i][/i]Das wurde dir in diesem und deinen anderen Threads schon sehr oft beantwortet: Indem man die Grundlagen lernt. Dann sieht man das sofort.Wie soll man selbst auf die Idee kommen,
dass diese Variable richtig sein muss?
Die stehen in jedem Grundlagenbuch.Kann jemand die Grundlagen nochmal hinschreiben?
Weil du die Grundlagen nicht gelernt hast.Ich sehe mir die Methode an, kann sie aber nicht nachvollziehen....!
Es wurde alles schon einmal geschrieben. Du musst es nur lesen. Mehr kann dir jetzt keiner mehr helfen.
Das beantwortet natürlich deine Fragen ... Du hast einen post vorher geschrieben "Bevor ich die neue Aufgabe anfange, will ich erstmal die alte verstehen" (so sinngemäß) und hast Fragen gestellt z.B. Was array macht...Sorry, das beantwortet aber leider nicht meine Fragen.
Wäre gut, wenn mir jemand die letze Aufgabe erklären könnte
bzw. wäre es auch gut, wenn mir jemand nen Tipp geben kann,
wie ich die Methode ruhigsteStunde() schreiben kann.
Bisher war es nur so, dass du nicht imstande warst, aus einer Aufgabenstellung ein Konzept zu entwickeln, und aus dem Konzept einen Code. Wenn der Code aber erstmal geschrieben war, hatte ich schon den Eindruck, dass du ihn verstehst.Ich sehe mir die Methode an, kann sie aber nicht nachvollziehen....!
ist wirklich Hopfen und Malz verloren.Kann jemand die Grundlagen nochmal hinschreiben?
Entgegen der Meinung praktisch aller anderen warst du hier (in einem deiner anderen Threads) noch überzeugt, dir würde alles klar werden, sobald du die Lösung siehst. Was ist denn nun damit?Die Lösung wurde geschrieben, ich habe es dann übernommen. Ohne zu verstehen, warum...!
Auch hier habt ihr wieder locker über 1.000 Aufrufe geschafft, nun muss der Priester wieder ran.Entgegen der Meinung praktisch aller anderen warst du hier (in einem deiner anderen Threads) noch überzeugt
zugriffeInStunde[i]
zugriffeInStunde[i]
Gehen Sie sicher, dass ihre Methode mit Daten arbeitet,
bei denen jede Stunde einen Wert größer als 0 hat.
Nein, kannst du ja noch nicht... Sonst erübrigt sich ja Deine Frage(n).Nur 2 Sätze dazu! Ich brauche keine komplette Einführung, die kann ich schon!
-1
und > 0
ist einfach KONVENTION.Doch, das steht in jedem Buch in dem Kapitel über arrays ,,,Das steht in keinem Buch geschrieben, was der Unterschied zwischen und i sein soll....!
zugriffeInStunde[i]
zugriffeInStunde[i]
zugriffeInStunde[i]
Dann lies dir mal Kapitel 3.8.5 durch. Ich fürchte allerdings, dass der Nutzen für dich nur sehr begrenzt sein wird, weil da das Array zugriffeInStunde tatsächlich nicht vorkommt, und ich nicht erwarte, dass du das, was da über die arraysin "Java ist auch eine Insel" [steht es] auch nicht
So wird der Thread ja nie enden! (wenn du noch Öl ins Feuer gießt....)und ich nicht erwarte,
So wie alle Aufgaben, die man nicht lösen kann, obwohl man es eigentlich können sollte.Es ist eine blöde Aufgabe
Gehen Sie sicher, dass ihre Methode mit Daten arbeitet,
bei denen jede Stunde einen Wert größer als 0 hat.
Stunde Zugriffe
1 2
2 0
3 0
4 0
5 2
6 7
7 7
8 8
9 12
10 5
11 1
12 18
13 14
14 7
15 6
16 4
17 2
18 14
19 16
20 22
21 24
22 17
23 4
24 3
Warum lässt du dir in der Schleife nicht einfach beides ausgeben? Dann siehst du doch, ob bzw. welchen Unterschied es gibt.Es sind beides 2 unterschiedliche Variablen?
Beide Variablen enthalten unterschiedliche Werte?
class StundeZugriff implements Comparable<StundeZugriff> {
static LinkedList<StundeZugriff> list = new LinkedList<>();
int index;
int stunde;
int zugriff;
StundeZugriff(int index, int stunde, int zugriff) {
this.index = index;
this.stunde = stunde;
this.zugriff = zugriff;
}
public static void main(String[] args) {
/*
* Daten von Harry....
*/
String string
= "Stunde Zugriffe\n"
+ "1 2\n"
+ "2 0\n"
+ "3 0\n"
+ "4 0\n"
+ "5 2\n"
+ "6 7\n"
+ "7 7\n"
+ "8 8\n"
+ "9 12\n"
+ "10 5\n"
+ "11 1\n"
+ "12 18\n"
+ "13 14\n"
+ "14 7\n"
+ "15 6\n"
+ "16 4\n"
+ "17 2\n"
+ "18 14\n"
+ "19 16\n"
+ "20 22\n"
+ "21 24\n"
+ "22 17\n"
+ "23 4\n"
+ "24 3\n";
handleString(string);
printMinHour();
printMaxHour();
}
static void printMinHour() {
System.out.println(list.get(getMinHour()));
}
static void printMaxHour() {
System.out.println(list.get(getMaxHour()));
}
static int getMinHour() {
StundeZugriff[] array = list.toArray(new StundeZugriff[0]);
Arrays.sort(array);
return array[0].index;
}
static int getMaxHour() {
StundeZugriff[] array = list.toArray(new StundeZugriff[0]);
Arrays.sort(array);
return array[array.length - 1].index;
}
@Override
public int compareTo(StundeZugriff o) {
return zugriff - o.zugriff;
}
@Override
public String toString() {
return "StundeZugriff{" + Arrays.toString(new int[]{index, stunde, zugriff}) + "}";
}
}
/**
* Diese Funktion ist nicht so wichtig....
*
* @param string
*/
static void handleString(String string) {
Scanner scanner = new Scanner(string);
try {
scanner.nextLine();
while (true) {
String nextLine = scanner.nextLine();
Pattern pattern = Pattern.compile("(\\d+) +(\\d+)");
Matcher matcher = pattern.matcher(nextLine);
if (matcher.find()) {
StundeZugriff stundeZugriff = new StundeZugriff(list.size(), Integer.parseInt(matcher.group(1)), Integer.parseInt(matcher.group(2)));
list.add(stundeZugriff);
}
}
} catch (NoSuchElementException e) {
}
}
StundeZugriff{[1, 2, 0]}
StundeZugriff{[20, 21, 24]}
Welchen denn?kann mal jemand den Beitrag vom "Wissenden" in die OT-Tags einschliessen
Naja, viiiielleicht hätte ich das nicht so geschrieben, und dann dachte ich, Hey, verwendest du mal die Klasse Scanner....Nanu, seit wann verwendest du denn scanner
Aber du weisst schon dass das hier an der Stelle absoluter Nonsense istso hätte ich das gemacht, sortieren
Schau dir mal diese Beispieldaten an. Welches ist die ruhigste Stunde, und wie bist du auf die Lösung gekommen?
Du kannst einen echt fertig machen. Gerade dachte ich du hast es verstanden ? Wo sind denn hier zwei Arrays ? Es geht immer um dieses eine f... Array in dem die Zugriffe pro Stunden und das für 24 Stunden gespeichert sind.Das sind doch beides Arrays, oder?
Liste mit Zahlen.
Jetzt versuch halt mal das mit der anderen Methode als Beispiel umzusetzen.
public int ruhigsteStunde() {
int maximaleAnzahlAnZugriffenProStunde = 0;
int stundeMitDerMaximalenAnzahlAnZugriffen = -1;
for (int i = 0; i > zugriffeInStunde.length; i--){
if(zugriffeInStunde[i] > maximaleAnzahlAnZugriffenProStunde){
maximaleAnzahlAnZugriffenProStunde = zugriffeInStunde[i];
stundeMitDerMaximalenAnzahlAnZugriffen = i;
}
} return stundeMitDerMaximalenAnzahlAnZugriffen;
}
}
zugriffeInStunde[i]
Das ist kein Nonsens, das ist Best Practice...Aber du weisst schon dass das hier an der Stelle absoluter Nonsense ist
Soll ich jetzt ein bisschen lachen ? Und du meinst wirklich wenn er nicht in der Lage ist mit einer simplen Schleife das Minimum in einem Array zu finden dass er auch nur irgendein Wort von deinem Ansatz versteht ??Ihr seht doch, dass er, sie, es euren Ansatz nicht versteht
Ja gut in den Anfängerbereich passt das nicht unbedingt....dass er auch nur irgendein Wort