Erste Schritte Protokollauswerter

Status
Nicht offen für weitere Antworten.
X

Xyz1

Gast
Ausserdem vergisst du ganz dass er bestimmte Klassen und Methoden vorgegeben hat
Niemand liest sich über 100 Antworten durch, das übersteigt den minimalen Teil meiner Aufmerksamkeit. :confused:

Bearbeitung: Vielleicht ist es das BESTE, er liese sich erstmal die oben genannten Kapitel durch....
 

Devanther

Top Contributor
Das liegt wohl daran, dass ich die gestern fertiggestellte Methode immer noch nicht ganz verstanden habe...

Code:
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;
            }
        System.out.println( zugriffeInStunde[i]);
        System.out.println(i);
         
    }    return stundeMitDerMaximalenAnzahlAnZugriffen;
    }

Es werden 2 unterschiedliche Zahlen ausgegeben.
System.out.println(i); gibt Werte zwischen 0 und 23 aus!
System.out.println(zugriffeInStunde); gibt Werte zwischen 0 und 2 aus.
Also: Zu einer bestimmten Zeit werden die Zugriffe angezeigt!
Ich glaube, ich habe es jetzt verstanden!
Und zurückgeliefert wird (i) die Stunde mit den meisten Zugriffen!

Und das
Code:
zugriffeInStunde[i]
ist ein beliebiger Name?
 

Devanther

Top Contributor
Code:
public int ruhigsteStunde() {
 
int maximaleAnzahlAnZugriffenProStunde = 0;
 
    int stundeMitDerMaximalenAnzahlAnZugriffen = -1;   
     
    for (int i = 0; i < zugriffeInStunde.length; i++){
        if(zugriffeInStunde < zugriffeInStunde.length )
        if(zugriffeInStunde >0)
{
             maximaleAnzahlAnZugriffenProStunde = zugriffeInStunde;
             stundeMitDerMaximalenAnzahlAnZugriffen = i;
            }
     
         
    }    return stundeMitDerMaximalenAnzahlAnZugriffen;
    }
 

Devanther

Top Contributor
Das ist kein beliebiger Name sondern er steht in der Vorgabe für dein Klasse so drin. Allerdings hast du recht, man hätte das Array stattdessen auch "hugo" nennen können

Wie soll ich das verstehen?
In welcher Beziehung steht
Code:
zugriffeInStunde[i]
zum Array zugriffeInStunde.length?
Das dass Array selbst einen anderen Namen haben könnte, ist mir klar.
 
X

Xyz1

Gast
Und zurückgeliefert wird (i) die Stunde mit den meisten Zugriffen!
Das ist eigentlich noch offen. Ich fände es gut, wenn der Index der Stunde mit den meisten Zugriffen zurückgegeben werd. Dann müsste die Methode heißen, getMinHourIndex...

Grafisch soll die Methode Folgendes machen:
ud1.png
Wobei Stunde ja eigentlich en abgeleiteter, berechneter Wert darstellt....
 
Zuletzt bearbeitet von einem Moderator:

Meniskusschaden

Top Contributor
In welcher Beziehung steht
Java:
zugriffeInStunde[i]
zum Array zugriffeInStunde.length?
Das Array heisst nicht zugriffeInStunde.length sondern zugriffeInStunde.
zugriffeInStunde[ i] ist das i-te Element des Arrays zugriffeInStunde.
zugriffeInStunde.length ist die Länge des Arrays, also die Anzahl seiner Elemente.
Das ist eigentlich noch offen. Ich fände es gut, wenn der Index der Stunde mit den meisten Zugriffen zurückgegeben werd.
Wieso offen? Die Methode aktivsteStunde() soll genau diesen Index liefern und tut das ja auch bereits.
 

Meniskusschaden

Top Contributor
...aber die Methode "passivste"Stunde() tut das noch nicht, soweit ich das überblicken kann.... Es wäre doch schön, wenn überall der Index zurückgegeben werd.
Dein Posting war aber die Antwort auf eine Frage zur Methode aktivsteStunde(). Ausserdem soll ja auch überall der Index zurückgegeben werden. Die Stunden sind von 0 bis 23 durchnummeriert.
Und das hier:
Das ist eigentlich noch offen. Ich fände es gut, wenn der Index der Stunde mit den meisten Zugriffen zurückgegeben werd. Dann müsste die Methode heißen, getMinHourIndex...
ist so durcheinander, dass man nicht wissen kann, ob es nun um die aktivste oder passivste Stunde geht.
 
X

Xyz1

Gast
Zu später Stunde kann es schonmal vorkommen, dass alle aneinander vorbei reden!
Das sollte keine arglistige Täuschung o. Ä. sein ...

Wenn nun keine Fragen mehr offen sind ... dann wäre ja (zumindest) dieses Thema gelöst.^^
 

Devanther

Top Contributor
Und
Code:
zugriffeInStunde[ i]
und i sind unterschiedliche Variablen, weil einmal die Stunde und einmal die Zugriffe ausgegeben werden müssen! Ich habe es endlich gescheckt^^
ohman solange^^

bleibt nur noch die Frage offen, wie man die Methode ruhigsteStunde() schreiben muss.

Code:
public int ruhigsteStunde() {
 
    int maximaleAnzahlAnZugriffenProStunde = 0;
 
    int stundeMitDerMaximalenAnzahlAnZugriffen = -1;
  
    for (int i = 0; i < zugriffeInStunde.length; i++){
        if(zugriffeInStunde[i] > maximaleAnzahlAnZugriffenProStunde)
        if(        i > 0)
        {
            maximaleAnzahlAnZugriffenProStunde = zugriffeInStunde[i];
             stundeMitDerMaximalenAnzahlAnZugriffen = i;
            }
  
      
    }    return stundeMitDerMaximalenAnzahlAnZugriffen;
    }

Jetzt wird nur mit Werten gearbeitet >0.

Ich glaube ich gebe auf -.-
 
Zuletzt bearbeitet:

Devanther

Top Contributor
Code:
public int ruhigsteStunde() {
    int maximaleAnzahlAnZugriffenProStunde = 0;
    int stundeMitDerMaximalenAnzahlAnZugriffen = -1;
   
    for (int i = 0; i < zugriffeInStunde.length; i++){
        if( i > maximaleAnzahlAnZugriffenProStunde)
        if( i < zugriffeInStunde
           {
             maximaleAnzahlAnZugriffenProStunde = zugriffeInStunde;
             stundeMitDerMaximalenAnzahlAnZugriffen = i;
            }
   
       
    }    return stundeMitDerMaximalenAnzahlAnZugriffen;
    }
 
Zuletzt bearbeitet:

Devanther

Top Contributor
Code:
public int ruhigsteStunde() {
 
    int maximaleAnzahlAnZugriffenProStunde = 0;
 
    int stundeMitDerMaximalenAnzahlAnZugriffen = -1;
 
    for (int i = 0; i < zugriffeInStunde.length; i++){
        if( i > maximaleAnzahlAnZugriffenProStunde){
             maximaleAnzahlAnZugriffenProStunde =  i;
             stundeMitDerMaximalenAnzahlAnZugriffen = zugriffeInStunde[i];
            }
 
     
    }    return  maximaleAnzahlAnZugriffenProStunde;
    }

Ich brauche 2 Prüfungen, eine >0 und eine niedrigste Stunde.
Ich hab das jetzt alles umgebschrieben, ohne Erfolg.



Wie prüfe ich auf niedrigste Stunde? Und merke mir diesen Wert.
Ich weiss einfach nicht, wie man die Stunden miteinander vergleichen soll!
Ich muss die Stunden ansich miteinander vergleichen.
also: if( i < ********
mit zugriffeInStunde kann ich nicht vergleichen, ich kann ja nicht einen int
Wert mit einem Array vergleichen.

Sorry, kann mich jemand aufklären, ich gebe echt auf.

Also muss nach der for Schleife ein verschachteltes if erfolgen.
 
Zuletzt bearbeitet:

JStein52

Top Contributor
Du schreibst nur Unsinn und bist nicht mal in der Lage deine Variablen sinnvoll zu benennen. Suchst du denn die maximale Anzahl Zugriffe pro Stunde und die Stunde mit der maximalen Anzahl Zugriffe ?
Du solltest jetzt ernsthaft überdenken ob das das richtige für dich ist. Es ist ja nicht schlimm wenn du das nicht lernst aer sieh es halt endlich ein. Es wird nichts.
 
X

Xyz1

Gast
Auch über so etwas darf gern mal nachgedacht werden (auf komplizierte Methoden und Java 8 - bis auf 1 Stelle - habe ich verzichtet):
Java:
    public static void main(String[] args) {
        int[] stundeZugriffe = {
            2,
            0,
            0,
            0,
            2,
            7,
            7,
            8,
            12,
            5,
            1,
            18,
            14,
            7,
            6,
            4,
            2,
            14,
            16,
            22,
            24,
            17,
            4,
            3
        };
        Integer[] indexes = new Integer[stundeZugriffe.length];
        for (int i = 0; i < indexes.length; i++) {
            indexes[i] = i;
        }
        Arrays.sort(indexes, (Integer o1, Integer o2) -> stundeZugriffe[o1] - stundeZugriffe[o2]);
        for (int i = 0; i < indexes.length; i++) {
            System.out.println(indexes[i] + "\t" + stundeZugriffe[indexes[i]]);
        }
        System.out.println("----------");
        System.out.println("Min Hour: " + indexes[0] + "\t" + stundeZugriffe[indexes[0]]);
        System.out.println("Max Hour: " + indexes[indexes.length - 1] + "\t" + stundeZugriffe[indexes[indexes.length - 1]]);
    }

Code:
1	0
2	0
3	0
10	1
0	2
4	2
16	2
23	3
15	4
22	4
9	5
14	6
5	7
6	7
13	7
7	8
8	12
12	14
17	14
18	16
21	17
11	18
19	22
20	24
----------
Min Hour: 1	0
Max Hour: 20	24
 

JStein52

Top Contributor
Code:
        Arrays.sort(indexes, (Integer o1, Integer o2) -> stundeZugriffe[o1] - stundeZugriffe[o2]);
und wie willst du ihm das erklären ??
Mal vom ganzen Rest abgesehen ? Er kapiert ja nicht mal was ein array ist, wie man Elemente eines Arrays anspricht usw.
 
X

Xyz1

Gast
Okay, also bei jedem Hakt es irgendwo - so auch bei mir, wenn ich irgendeine Definition beweisen soll - aber ein Axiom als gegeben hinnehmen soll.
--
Vielleicht fehlt ihm auch ein Gen für die Programmierung - um sie zu verstehen.
--
Dort wird ein 2. Array erstellt, dass zunächst nicht viel mit dem 1. zu tun hat - außer dass es seine Indices abbildet. - Das 1. Array dürfte nicht einfach verändert werden - weil sonst die Abbildung Stunde/Index -> Anzahl der Zugriffe nicht mehr gegeben wäre. - Das 2. Array wird jetzt anhand der Werte/Anzahl der Zugriffe des 1. Arrays sortiert!
 

Harry Kane

Top Contributor
Hier die Aufgabenstellung in Prosa
Code:
Deklariere zwei int Variablen:
    minimaleAnzahlAnZugriffenProStunde, Anfangswert Integer.MAX_VALUE
    stundeMitDerMinimalenAnzahlAnZugriffen, Anfangswert -1
Gehe mit einer for-Schleife über alle Einträge in zugriffeInStunde
Die Laufvariable habe den Namen i
    Überprüfe den i-ten Eintrag in zugriffeInStunde
    Falls der i-te Eintrag kleiner ist als minimaleAnzahlAnZugriffenProStunde und größer ist als der int-Wert null (0),
        Weise minimaleAnzahlAnZugriffenProStunde den Wert vom i-ten Eintrag zu
        Weise stundeMitDerMinimalenAnzahlAnZugriffen den Wert von i zu
    Ende der Überprüfung des i-ten Eintrags
Ende der for-Schleife
Gebe stundeMitDerMinimalenAnzahlAnZugriffen zurück.
Der Rückgabewert -1 bedeutet, dass gar keine Zugriffe stattgefunden haben
Na guuut, dann sei nicht bös', wenn ich zunächst einmal aus dieser Diskussion verschwinde.
Ich kann zwar nicht für @JStein52 sprechen, aber die Stimmung, die sich bei mir einstellt, wenn du ankündigst, dich aus einer Diskussion zurückzuziehen, ist mit "böse" nicht sehr treffend beschrieben.
 

Devanther

Top Contributor
Lösung:rolleyes:

Auch wenn ich mich sehr darüber ärgern werde, dass ich nicht selber auf die Lösung gekommen bin.

Code:
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;
    }
Also mit Stunden größer 0 wird schon gearbeitet.
Wie ich auf die ruhigste Stunde kommen soll:(
 

Devanther

Top Contributor
Dass ich totzdem Fortschritte mache!

Aber du hast da ja nur die Methode hingeschrieben die schon abgehakt ist ???

Ja.

Code:
zugriffeInStunde[i] > maximaleAnzahlAnZugriffenProStunde)

Also diese Zeile muss schonmal richtig sein, da ja mit Werten > 0 gearbeitet werden soll.....ich weiss nicht was ich verändern muss, um die ruhigste Stunde zu bekommen!
 

Devanther

Top Contributor
Code:
public int ruhigsteStunde() {
 
    int maximaleAnzahlAnZugriffenProStunde = 0;
 
    int stundeMitDerMaximalenAnzahlAnZugriffen = -1;  
    
    for (int i = 0; i < zugriffeInStunde.length; i++){
        if(zugriffeInStunde[i] > maximaleAnzahlAnZugriffenProStunde){

Bis hier hin richtig?

Es ist extrem ärgerlich, die Lösung nicht zu haben, da fehlt sooo wenig!
 

Devanther

Top Contributor
Code:
if(zugriffeInStunde[i] > maximaleAnzahlAnZugriffenProStunde){

Also ich habe bisher gedacht, dass hier auf > 0 geprüft wird?
Und bin davon ausgegangen, dass es richtig ist.
 

Harry Kane

Top Contributor
Also ich habe bisher gedacht, dass hier auf > 0 geprüft wird?
Solange maximaleAnzahlAnZugriffenProStunde seinen Anfangswert von 0 behält. Leider ändert sich der Wert von maximaleAnzahlAnZugriffenProStunde im Laufe der Methode, ansonsten bräuchte man die Variable gar nicht, sondern könnte immer 0 schreiben.
Du kannst einen wahnsinnig machen.
Jep. Ich schreibe hier übrigens überwiegend deshalb, um meine Selbstbeherrschung und Geduld zu trainieren. Und es klappt tatsächlich. :)
 

Devanther

Top Contributor
Deklariere zwei int Variablen:
minimaleAnzahlAnZugriffenProStunde, Anfangswert Integer.MAX_VALUE
stundeMitDerMinimalenAnzahlAnZugriffen, Anfangswert -1
Gehe mit einer for-Schleife über alle Einträge in zugriffeInStunde
Die Laufvariable habe den Namen i
Überprüfe den i-ten Eintrag in zugriffeInStunde
Falls der i-te Eintrag kleiner ist als minimaleAnzahlAnZugriffenProStunde und größer ist als der int-Wert null (0),
Weise minimaleAnzahlAnZugriffenProStunde den Wert vom i-ten Eintrag zu
Weise stundeMitDerMinimalenAnzahlAnZugriffen den Wert von i zu
Ende der Überprüfung des i-ten Eintrags
Ende der for-Schleife
Gebe stundeMitDerMinimalenAnzahlAnZugriffen zurück.
Der Rückgabewert -1 bedeutet, dass gar keine Zugriffe stattgefunden haben


Code:
public int ruhigsteStunde() {
  
    int   minimaleAnzahlAnZugriffenProStunde = Integer.MAX_VALUE;
  
    int stundeMitDerMinimalenAnzahlAnZugriffen = -1;    
      
    for (int i = 0; i < zugriffeInStunde.length; i++){
        if(zugriffeInStunde[i] < minimaleAnzahlAnZugriffenProStunde)
        if( minimaleAnzahlAnZugriffenProStunde > 0)  {

             minimaleAnzahlAnZugriffenProStunde = zugriffeInStunde[i];
             sstundeMitDerMinimalenAnzahlAnZugriffen = i;
            }
      
          
    }    return stundeMitDerMinimalenAnzahlAnZugriffen;
    }
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben