Zufallsgenerator, Crash beim auslesen eines Arrays in einen String?

  • Antworten:3
  • Bentwortet
Tim Meißner
  • Forum-Beiträge: 238

03.11.2010, 22:42:27 via Website

Moin!

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

"temp += numArray[i]; <-- 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);


}
};
[/code]

— geändert am 03.11.2010, 22:43:03

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

03.11.2010, 23:10:33 via App

i < numbers +1 ist nicht gut. array ueberlauf

swordiApps Blog - Website

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

04.11.2010, 01:28:34 via Website

1int numbers = Integer.parseInt(ed.getText().toString());
2
3int[] numArray = new int[6];
4
5for(int i = 0;i<numbers;i++)

In der 2. Zeile erzeugst du ein Array mit konstant 6 Einträgen;
In der 1. Zeile liest du einen Wert aus einem Eingabefeld, der daher leicht größer als 6 sein kann;
In der 3. Zeile benutzt du den ausgelesenen Wert statt der beim Anlegen benutzten Konstante.

Das zusätzliche "+1" Problem hat Markus bereits genannt.

Antworten
Tim Meißner
  • Forum-Beiträge: 238

04.11.2010, 07:26:12 via Website

ah danke das geht.
habe nen logik fehler beim auslesen gemacht.

wenn i = 5 ist, dann ist er ja schon beim letzten arrayelement und nicht erst bei 6...

jetzt geht alles einwandfrei :)

edit: und wie überprüfe ich nun ob ein element in einem array schon vorhanden ist? gibts da wie in c# ne methode "contains(Object obj)" oder muss ich mir das selbst programmieren mit nem schleifendurchlauf?

— geändert am 04.11.2010, 07:30:06

Antworten