Java Array

Diskutiere Java Array im Developer Network Forum im Bereich Hardware & Software Forum; Also habe folgende Aufgabenstellung: §Ermitteln Sie die Häufigkeiten von Noten zwischen 1 und 5 (nur ganze Noten) §Die Noten werden vom...
  • Java Array Beitrag #1
Penecho

Penecho

Bekanntes Mitglied
Dabei seit
19.09.2001
Beiträge
2.636
Reaktionspunkte
1
Ort
RLP
Also habe folgende Aufgabenstellung:

§Ermitteln Sie die Häufigkeiten von Noten zwischen 1 und 5 (nur ganze Noten)
§Die Noten werden vom Programm zufällig ermittelt
§Die Häufigkeiten sollen sowohl absolut als auch als einfache Graphik ausgegeben werden

Beispiel einer Ausgabe:
Die Häufigkeitsverteilung sieht wie folgt aus:
1 19
2 21
3 22
4 16
5 22
Die Graphik dazu:
Note Häufigkeit
1 *******************
2 *********************
3 **********************
4 ****************
5 **********************


die Häufigkeitsverteilung absolute habe ich bereits, nur wie das mit der Grafik gehen soll habe ich keine Ahnung. Man soll dazu arrays verwenden.

Evtl. kann mit da ma wer nen denkanstoss geben :)

Also das mit der Häufigkeitsverteilung habe ich auch etwas umständlich gemacht:

if (note == 1){
merker1 = merker1 + 1;
}
else
if (note == 2) {
merker2 = merker2 + 1;
}
else
if (note == 3) {
merker3 = merker3 + 1;
}
else
if (note == 4) {
merker4 = merker4 + 1;
}
else
if (note == 5) {
merker5 = merker5 + 1;
}
}

Theoretisch wäre das ja einfacher wenn ich ein Array machen würde das 100 Elemente aufnehmen kann, und danach gerade zählen lass wie oft die 1, 2, 3, 4, 5 darin vorkommt oder!?



Cu



Penecho
 
  • Java Array Beitrag #2
guzi

guzi

Bekanntes Mitglied
Dabei seit
11.02.2002
Beiträge
1.505
Reaktionspunkte
2
Ort
nirvana
Hallo
Die graphische Ausgabe lässt sich ganz einfach in Schleifen lösen.

Code:
package penecho;

public class Main 
{
    public static void main(String[] args)
    {
        int[] array;
        array = new int[5];
        array[0] = 19;
        array[1] = 21;
        array[2] = 22;
        array[3] = 16;
        array[4] = 22;
        for( int i=0; i < array.length; i++ )
        {
            System.out.print( i+1);
            for( int p=0; p < array[i]; p++)
            {
                System.out.print( '*' );
            }
            System.out.print( '\n');
        }
    }
}
 
Zuletzt bearbeitet:
  • Java Array Beitrag #3
goldieIII

goldieIII

Bekanntes Mitglied
Dabei seit
17.03.2001
Beiträge
932
Reaktionspunkte
0
Ein Array in Java wird wie folgt angelegt:

int[] array1 = new int[10];

Hier wird ein Array vom Typ int mit 10 Elementen angelegt. Bei dir wären das ja dann 100.

Ansprechen kannst du die Werte dann wie folgt:

array1[0] -> erste Stelle im Array
array1[99] -> letzte Stelle im Array

Beim füllen und abarbeiten des Array würde man eine Zählschleife nehmen die genauso lange läuft wie das Array groß ist.

array1

i ist die Zählvariable und entspricht der Stelle im Array.

EDIT: nicht doch gleich den Code zeigen. So macht das doch keinen Spass.
 
  • Java Array Beitrag #4
Penecho

Penecho

Bekanntes Mitglied
Dabei seit
19.09.2001
Beiträge
2.636
Reaktionspunkte
1
Ort
RLP
Ah, thx glaube da wär ich net drauf gekommen!


@goldieIII: deine Erklärung kann ich bei meiner nächsten aufgabe auch noch verwenden :) Da muss ich die 2. grösste Zahl in nem Array finden



Cu



Penecho
 
  • Java Array Beitrag #5
Penecho

Penecho

Bekanntes Mitglied
Dabei seit
19.09.2001
Beiträge
2.636
Reaktionspunkte
1
Ort
RLP
Nochma eine frage, bei der nächsten Aufgabe ist das vorgegeben:

int zweitgroesste = Integer.MIN_VALUE;

das Array ist ebenfalls vorgegeben. Das Integer.MIN_VALUE steht standardmäßig auf -2147483648. Wie benutze ich das sinnvoll? Ich soll ja die 2. größte Zahl im Array finden, wie hilftmir das denn da?



cu



Penecho
 
  • Java Array Beitrag #6
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
Du machst dir einfach zwei Variablen, einmal für die bisher gefundene zweitgrößte und für die bisher gefundene größte Zahl.
Beide initialisierst du auf den minimalen Integerwert, mittels der Zeile, die du gepostet hast. Das ist, damit beim ersten Vergleich mit einer Zahl diese Zahl auf jeden Fall größer ist, als der gespeicherte Wert.
Dann gehst du in einer Schleife in obiger Manier das ganze Array von vorne bis hinten durch. In der Schleife prüfst du, ob das aktuelle Element größer (bzw. besser größer-gleich) ist, als das gespeicherte größte. Wenn dem so ist, ersetzt du das gespeicherte zweitgrößte mit dem gespeicherten größten, und ersetzt dann das gespeicherte größte mit dem aktuellen. (ich hoffe, man kann das verstehen ;) Zwei Zeilen Code so kompliziert zu beschreiben grenzt ja schon fast an Kunst)

Beim ersten Schritt wird so natürlich zuerst das erste Element als größtes gespeichert, da es auf jeden Fall größer oder gleich sein wird, wie der minimale Integerwert. Danach läuft die Schleife so weiter, bis sie etwas findet, was größer ist, als das erste. Damit wird dieses zum zweitgrößten, und das neue größte auch gemerkt. Wenn die Schleife dann das ganze Array durch hat, hast du dein Ergebnis :)

btw.: Du solltest viell. eine Sicherheitsfunktion einbauen, die prüft, ob das Array auch wirklich mindestens zwei Elemente hat.

Gruß,
Degi
 
  • Java Array Beitrag #7
Penecho

Penecho

Bekanntes Mitglied
Dabei seit
19.09.2001
Beiträge
2.636
Reaktionspunkte
1
Ort
RLP
So, glaub ich habs:

Code:
public class ZweitgroessteZahlFrame {


    public static void main(String[] args) {
    //int[] daten = { 17,3,5,1,9};  
    int[] daten = { 5,3,7,1,9};
    
    // alternative Anfangswerte: { 5,3,7,1,9}; 
        
    int zweitgroesste = Integer.MIN_VALUE;
    int groesste = Integer.MIN_VALUE;
    
   //  hier kommt Ihr Algorithmus rein  
    
    for (int i = 0; i < daten.length; i++){    
            
            if (daten[i] > groesste){
                groesste = daten[i];
            }               
    }
    for (int a = 0; a < daten.length; a++){
            if (daten[a] < groesste && daten[a] > zweitgroesste){
                    zweitgroesste = daten[a];
                
        }
    }
            
    System.out.println("Die zweitgroeeste Zahl lautet: "+zweitgroesste);
        
    }
}
ohne die 2. for - Schleife funzts nur wenn das array schon sortiert ist, bessergesagt die zweitgrösste auf jeden fall hinter der grössten kommt im Array :)


Cu


Penecho
 
  • Java Array Beitrag #8
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
Hoppla, mein Fehler. ;)
Hab grad mal getestet, sowas
Code:
		if (a[i]>=g)
		{
			zg = g;
			g = a[i];
		}

		if (a[i]>=zg && a[i]<g)
		{
			zg = a[i];
		}
müsste auch mit nur einer Schleife das richtige finden. Man muss allerdings aufpassen, wie man mit zwei gleichen Elementen umgeht. Wenn die höchste Zahl zweifach vorhanden ist, listet das die gleiche Zahl als größtes und zweitgrößtes. Will man das nicht, müsste man den Vergleich entsprechend anpassen.
 
Thema:

Java Array

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.180
Beiträge
1.579.174
Mitglieder
55.879
Neuestes Mitglied
stonetreck
Oben