so leute habe noch ein Problem ich soll diese Aufgabe hier lösen
hier ist mein ansatz ( sollte soweit schon fast richtig sein):
Java:
publicclass histogramm
{/**
* @param args
*/publicstaticvoidmain(String[] args){// TODO Auto-generated method stubint m =Integer.parseInt(args[0]);int[] array;
array =newint[20];//zählervariableint z =0;for(int i =0; i<20; i++){double x =Math.round(Math.random()*((20-1)*1));
array[i]+= x;}int[] array2;
array2 =newint[m];for(int i =0; i<20; i++){for(int j =0;j<20; j++){//menge für z an iter stelle im neuen array bestimmenif(array[i]==array[j]){
z++;}}
array2[i]=z;
z=0;}System.out.println("Länge des zu erzeugenden Arrays: "+ m);System.out.println("Gegebenes Array:");for(int i=0; i<20;i++)System.out.print(array[i]+" ");System.out.println("");System.out.println("neues Array:");for(int i=0; i<m;i++)System.out.print(array2[i]+" ");
meine Frage:
bekomme einen error raus?
erkennt java in den verschachtelten for schleifen nicht die verschiedenen array zählvariablen, und packt es dewegen mit der if anweisung das zweite array nicht voll?
wie kann ich es richtig machen?
du bekommst einen Error raus, aber nennst ihn nicht?
niemand kann dein Programm richtig testen, denn es hängt von unbekannten Aufruf-Parametern ab (Integer.parseInt(args[0]); )
Hinweise:
> array2=z;
hier greifst du mit festen Indexen i = 0 bis 20 auf array2 zu, obwohl das nur m lang ist, wenn m < 20 ist, dann kracht es
definiere in deinem Programm eine Variable n = 20 oder so und verwende die statt die 20 überall reinzuschreiben
die Aufgabenstellung liest sich übrigens völlig anders, eine 20 ist da nicht erwähnt, auch nicht Zufallszahlen, da soll alles als Parameter eingelesen werden?
zufallszahlen udn parameter habe ich mir nur dazu gedachtda laut aufgabenstellung ja nur m als parameter eingelesen werden soll
hmmm....
hättest du denn einen vorschlag wo oder wie ich das 2te array sonst mit den werten befüllen soll wenn nicht innerhalb dieser schleife?
denn die schleife muss ja bis 20 laufen um array 1 durchzugehen, udn m kann ich ja nicht ebstimmen ;(
hätte vllt gedacht ein 3tes array zu erstellen und die werte dort reinzuspeichern und diese hinter her in
das 2te reinzufügen.... -aber das kann ja auch nicht so richtig sein ???:L
edit: und wenn ich m=20 ist kommen auch falsche werte raus ???:L
edit: fehler 1 gefunden: if (i==array[j]) anstatt if (array==array[j])
allerdinsg weiß ich noch nichtw ie ich kürzere m's befülle
was die 20 in deinem Programm zu suchen hat verstehe ich immer noch nicht,
du kannst ja gerne testweise 20 statt eingelesenes M nehmen,
außerdem definiere dir ein Array mit 20 Testwerten und dann überlege wie du da selber die Anzahl zählen würdest,
ob array == array[j] ist kann dabei doch keine Rolle spielen,
eher so:
wir schauen wieviel Elemente i sind (array[j] == i) und diese Zahl kommt dann in das Anzahl-Array an Stelle i
aber halt nicht die 100% richtige lösung je nachdem wie man die aufgabenstellung interpretiert
wäre für hilfe zur anderen Lösung dankbar
trotzdem schonmal danke :toll:
Java:
int m =Integer.parseInt(args[0]);int n =Integer.parseInt(args[0]);int[] array;
array =newint[n];//zählervariableint z =0;for(int i =0; i<n; i++){double x =Math.round(Math.random()*((n-1)*1));
array[i]+= x;}int[] array2;
array2 =newint[m];for(int i =0; i<n; i++){for(int j =0;j<n; j++){//menge für z an iter stelle im neuen array bestimmenif(i ==array[j]){
z++;}}
array2[i]=z;
z=0;}System.out.println("Länge des zu erzeugenden Arrays: "+ m);System.out.println("Gegebenes Array:");for(int i=0; i<n;i++)System.out.print(array[i]+" ");System.out.println("");System.out.println("neues Array:");for(int i=0; i<m;i++)System.out.print(array2[i]+" ");}}
weiß jmnd wie ich ein array übergebe und eine methode mittels array aufrufe?
hier werden mir syntax fehler angezeigt bei:
return array2;
und bei
int [] array2
array2 = histogramm(x,array);
Java:
publicclassStatistik{publicstaticint[]histogramm(int m,int[] array){//zählervariableint z =0;int[] array2;
array2 =newint[m];for(int i =0; i<m; i++){for(int j =0;j<m; j++){//menge für z an iter stelle im neuen array bestimmenif(i ==array[j]){
z++;}}
array2[i]=z;
z=0;}return array2;}/**
* @param args
*/publicstaticvoidmain(String[] args){// TODO Auto-generated method stubint m =Integer.parseInt(args[0]);int n =Integer.parseInt(args[0]);int[] array;
array =newint[n];for(int i =0; i<m; i++){double x =Math.round(Math.random()*((m-1)*1));
array[i]+= x;}int[] array2;
array2 =histogramm(m,array);System.out.println("Länge des zu erzeugenden Arrays: "+ m);System.out.println("Gegebenes Array:");for(int i=0; i<n;i++)System.out.print(array[i]+" ");System.out.println("");System.out.println("neues Array:");for(int i=0; i<m;i++)System.out.print(array2[i]+" ");}}