Hallo!
Ich muss eine Array Klasse mit ein paar Methoden schreiben und es happert ziemlich stark beim Code.
Hab natürlich schon selber versucht, es zu lösen, aber es kommen immer nur kryptische ZahlenBuchstaben - Kombinationen nach dem Erzeugen eines Random Arrays heraus. Auch die anderen Methoden scheinen nicht zu funktionieren...
Kann mir da wer weiterhelfen?
Ich poste mal die Aufgabenstellung und meinen Code:
(Auskommentierte Passagen, haben zu Problemen geführt)
Definieren Sie mit Hilfe einer Klasse einen abstrakten Datentyp IntArray,
der intern als Array von int-Werten implementiert ist, und neben den
Standardmethoden (Konstruktoren, toString, equals, clone, setXxx, getXxx, etc.)
auch jeweils eine Methode für die Bestimmung
a2) des groessten Wertes in a
b2) des zweitgroessten Wertes in a (ist definiert als der groesste Wert,
der kleiner als das Maximum ist)
c2) des Wertes, der am haeufigsten vorkommt
enthaelt.
1. Die Klasse Array2
2. Das Testprogramm (wsl. komplett chaotisch, weil ich verschiedenste Wege ausprobiert habe)
Wäre wirklich super wenn mir jemand helfen könnte, ich weiß echt nicht mehr was ich noch probieren soll und bin schon total verwirrt.
Danke schon im Vorhinein,
Tamara
Ich muss eine Array Klasse mit ein paar Methoden schreiben und es happert ziemlich stark beim Code.
Hab natürlich schon selber versucht, es zu lösen, aber es kommen immer nur kryptische ZahlenBuchstaben - Kombinationen nach dem Erzeugen eines Random Arrays heraus. Auch die anderen Methoden scheinen nicht zu funktionieren...
Kann mir da wer weiterhelfen?
Ich poste mal die Aufgabenstellung und meinen Code:
(Auskommentierte Passagen, haben zu Problemen geführt)
Definieren Sie mit Hilfe einer Klasse einen abstrakten Datentyp IntArray,
der intern als Array von int-Werten implementiert ist, und neben den
Standardmethoden (Konstruktoren, toString, equals, clone, setXxx, getXxx, etc.)
auch jeweils eine Methode für die Bestimmung
a2) des groessten Wertes in a
b2) des zweitgroessten Wertes in a (ist definiert als der groesste Wert,
der kleiner als das Maximum ist)
c2) des Wertes, der am haeufigsten vorkommt
enthaelt.
1. Die Klasse Array2
Java:
import java.util.Random;
public class Array2 {
int i = 0;
int [] a;
private Array b;
public Array2(int i){
int[] a = new int [i];
Random generator = new Random();
while (i < a.length){
a [i] = generator.nextInt (100);
i++;
}
}
public String toString (int [] a ){
for (int i = 0; i < a.length; i++) {
int Element = a [i];
return "Element: " + Element;
}
return "Der derzeitig gespeicherte Array ist: ";
}
public boolean equals (int [] a, int [] b){
int bo = 0;
for (int i = 0; i < a.length; i++) {
if (a [i] == b [i]) bo = 1;
}
return (bo==1);
}
public int[] clone (int [] a){
int i = a.length;
int [] b = new int [i];
while (i < a.length){
a[i]=b[i];
i ++;
}
return b;
}
public void setArray (int[] c){
int [] a = c;
}
/* public int getArray (){
if (a.length == 1) return a [0];
for (int i = 0; i < a.length; i ++) {
return a [i];
}
}
*/
public int max (int [] a){
int i = 0;
int max = 0;
while (i < a.length){
if (a[i] < a[i+1]) max = a[i+1];
if (a[i] > a [i+1]) max = a[i];
if (a[i] == a[i+1]) max = a[i];
i++;
}
return max;
}
public int max2 (int [] a){
int i = 0;
int max = 0;
int max2 = 0;
while (i < a.length){
/*if (a [i + 1] > a [i]) max = a[i + 1];
if (a[i] > a [i+1]) max = a[i];
if (a[i] == a[i+1]) max = a[i];
if (max > a [i+1] & a [i+1] > a [i]) max2 = a[i+1];*/
if(a[i]>max2 && a[i]!=max) {a[i]=max2;}
i++;
}
return max2; //return von zweitgroeßtem Wert; /*
}
/* public int most (int []a){
int z = 0;
for (int i = 0; i < a.length; i ++){
if (a[i] == a [i+1]) z++; //benachbarte Elemente werden verglichen
int l = 1;
while (l < a.length){
if (a [i] == a [l]) z++; // erstes wird mit allen Elementen verglichen
l ++;
}
/*for (int i,l = 1; l < a.length; l ++)
if (a [i] == a [l]) z++; // erstes wird mit allen Elementen verglichen
}
return z;
}*/
}
2. Das Testprogramm (wsl. komplett chaotisch, weil ich verschiedenste Wege ausprobiert habe)
Java:
public class Test {
public static void main(String[] args) {
int[] a = new int [5]; // Array mit 5 Elementen
a [0] = 5;
a [1] = 7;
a [2] = 1;
a [3] = 20;
a [4] = 15;
System.out.println (a[0]);
System.out.println (a[1]);
System.out.println (a[2]);
System.out.println (a[3]);
System.out.println (a[4]);
Array2 d = new Array2 (10);
System.out.println (d);
int [] c = new int [7];
System.out.println (c);
int[] b = a.clone();
System.out.println (b [3]);
// int max = d.max(c);
int max2 = d.max2(c);
System.out.println (max2);
// System.out.println (max);
// a.setArray (d);
System.out.println (d);
// d.getArray ();
System.out.println (a);
a.toString ();
System.out.println (a[2]);
c.toString ();
System.out.println (c);
// int z = d.most (c);
// System.out.println (z);
d.equals (a, b);
}
}
Wäre wirklich super wenn mir jemand helfen könnte, ich weiß echt nicht mehr was ich noch probieren soll und bin schon total verwirrt.
Danke schon im Vorhinein,
Tamara