Array Übergabe

Neondream

Aktives Mitglied
so leute habe noch ein Problem ich soll diese Aufgabe hier lösen



hier ist mein ansatz ( sollte soweit schon fast richtig sein):

Java:
public class histogramm 
{

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		// TODO Auto-generated method stub

		int m = Integer.parseInt(args[0]);
		
		int [] array;
		array = new int [20];
		//zählervariable
		int z = 0;
		
		for (int i =0; i<20; i++)
		{
			double x = Math.round(Math.random()*((20-1)*1));
			array[i] += x;
		}
		
		int [] array2;
		array2 = new int [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 bestimmen
				if(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?

schonmal danke für eventuelle HIlfe

nicegreeetz
neon
 
Zuletzt bearbeitet:
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
 
Zuletzt bearbeitet:
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
 
😀 gleichzeitig gefunden und gepostet 😉

die 20 kann ich ja noch ändern 😉

aber muss ich dann zum befüllen eine neue schleife mit einbauen die bis m läuft ?!
 
also so würds funktionieren 😀

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 = new int [n];
		//zählervariable
		int z = 0;
		
		
		for (int i =0; i<n; i++)
		{
			double x = Math.round(Math.random()*((n-1)*1));
			array[i] += x;
		}
		
		int [] array2;
		array2 = new int [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 bestimmen
				if(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]+" ");
		
		

		
	}

}
 
da wirft sich direkt noch ne frage auf 😉

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:
public class Statistik 
{
	public static int [] histogramm(int m,int [] array)
	{
		//zählervariable
		int z = 0;
		
		int [] array2;
		array2 = new int [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 bestimmen
				if(i ==array[j])
				{
					z++;
				}
				
			}
			array2[i]=z; 
			z=0;
			
		}
		return array2;

	}

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		// TODO Auto-generated method stub

		
		int m = Integer.parseInt(args[0]);
		
		int n = Integer.parseInt(args[0]);
		int [] array;
		array = new int [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]+" ");
	}

}
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben