Java [Android]

Timmey92

Commodore
Registriert
Okt. 2008
Beiträge
4.567
Moin!

Habe hier nen Crash drinne und verstehe ihn einfach nicht...
Soll ein Zufallsgenerator sein.
Crashline ist markiert.

"temp += numArray; <-- crashline"
Kann ich einfach nicht nachvollziehen, vielleicht könnt ihr mir helfen?

Code:
OnClickListener generateOnClickListener = new OnClickListener() {
		
		@Override
		public void onClick(View v) {
			TextView tv = (TextView)findViewById(R.id.TextView03);
			EditText ed = (EditText)findViewById(R.id.EditText01);
			int maxnumbers = Integer.parseInt(ed.getText().toString());
			ed= (EditText)findViewById(R.id.EditText02);
			int numbers = Integer.parseInt(ed.getText().toString());
			
			int[] numArray = new int[6];
			
			for(int i = 0;i<numbers;i++)
			{
				numArray[i] =  (int)(Math.random()*maxnumbers);
			}
			
			tv.setText("");
			String temp = "";
			for(int i = 0;i<numbers+1;i++)
			{
				temp += numArray[i]; <-- crashline
			
				
				
				if(i!=numbers)
				{
				temp +=",";
				}
			}
			tv.setText(temp);
	
			
		}
	};
 
Kann es sein, dass du über das letzte Array-Element hinaus liest?
 
Ja, das "i<numbers+1" scheint hier definitiv falsch. Zudem gibt es wohl soundso einen Crash (oben in der ersten Schleife schon) wenn der User in das Feld mehr als 6 eingibt.
 
ne numbers+1 ist schon richtig.
es ist ja i KLEINER als numbers <- wenn ich "i < numbers" mache. liest er das letzte array element nicht, da es gleich groß ist wie numbers.
ihr habt allerdings recht das ich das array mit "numbers" initialisieren muss.

edit: iihr habt recht xD großer logikfehler von mir ....
das array hat ja nur 6 elemente, also von [0] bis [5] ... von demher ist int i = 0; i < numbers;i++ (Läuft dann von 0 bis 5) doch richtig, danke leute!
 
Zuletzt bearbeitet:
int[] numArray = new int[6] <-- dein Array hat immer 6, du iterierst aber bis numbers. Wer sagt, dass numbers auch immer 6 ist?

Mach doch in der Schleife besser gleich sowas:
int[] numArray = new int[numbers]
for(int i = 0; i < numArray.length; i++)

Ach ja, Leerzeichen erhöhen die Lesbarkeit...

Und "numbers" ist eine denkbar schlechte Bezeichnung für ne Mengenangabe... numberCount wäre sinnvoller, numbers wäre eher der Name für das Array.
 
int maxnumbers = Integer.parseInt(ed.getText().toString());
ed= (EditText)findViewById(R.id.EditText02);

muss das nicht umgekehrt sein? also:
ed= (EditText)findViewById(R.id.EditText02);
int maxnumbers = Integer.parseInt(ed.getText().toString());
 
nein ich verwende "ed" wieder, also es gibt 2 edittext views ;)

EditText ed = (EditText)findViewById(R.id.EditText01);
int maxnumbers = Integer.parseInt(ed.getText().toString());
ed= (EditText)findViewById(R.id.EditText02);
int numbers = Integer.parseInt(ed.getText().toString());
 
Zuletzt bearbeitet:
Zurück
Oben