Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Java - Array per Schleife Werte zuweisen

hallo,
ich möchte einem array werte mit hilfe einer schleife zuweisen (über tastatur). das problem ist, dass bei eingabe einer '0' das programm beendet werden soll.
ich habe schon eine lösung, doch ich denke, dass es eine elegantere lösung dafür gibt.

int[] reihe  = new int[laenge];

for (int i = 0; i < reihe.length; i++ )  {
reihe[i] = 1;
}

for (int i = 1; (i < reihe.length) && (reihe[i - 1] != 0); i++ )  {

reihe[i] = Konsole.getInputInt("Geben Sie eine Zahl ein (0 zum Beenden): ");

}

die erste schleife dient nur dazu, dem array werte, die verschieden sind von null, zuzuweisen, so dass die zweite schliefe überhaupt ausgeführt wird.

falls jmd eine bessere und elegantere lösung hat - immer her damit :)

Antworten zu Java - Array per Schleife Werte zuweisen:

Da kann man ja nicht zuschauen.

Probier mal das:


int[] reihe  = new int[laenge];
java.lang.util.Arrays.fill(reihe, 1);
for (int i = 1; i < reihe.length; i++ )  {
  if ((reihe = Konsole.getInputInt("Geben Sie eine Zahl ein (0 zum Beenden): ")) == 0) {
    break;
  }
}

Da kann man ja nicht zuschauen.

Probier mal das:


int[] reihe  = new int[laenge];
java.lang.util.Arrays.fill(reihe, 1);
for (int i = 1; i < reihe.length; i++ )  {
  if ((reihe = Konsole.getInputInt("Geben Sie eine Zahl ein (0 zum Beenden): ")) == 0) {
    break;
  }
}

danke, funktioniert. ich habe jedoch meine 2. schleife so gelassen, da 'break' oft nicht gern gesehn wird.
auf jeden fall danke :)

wobei ich gerade bemerkt habe, dass durch die initialisierung von i mit 1, die komponente bei index 0 nicht mit einem eingabewert belegt wird.
bei deiner variante würde es mit i=0 gehen - dabei  "stört" mich aber das 'break'^^
« Letzte Änderung: 17.06.09, 00:29:36 von Scarred Soul »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Bei so einer einfachen Konstruktion ist break kein Problem. Gibt es immerhin nicht umsonst in den meisten Sprachen. Wenn man viele verschachtelte Schleifen hat und dann viele breaks und continues drin - dann kann es etwas unübersichtlich werden. Ansonsten sehe ich keinen Grund, break nicht zu verwenden. Für solche Sachen wie in deinem Beispiel gibts das ja erst.

Zur Abwechslung mal absolute Zustimmung an Lisaa,
du könntest das ganze natürlich auch entsprechend invertiert und mit && in die bedingung der for-schleife packen, aber sind wir ehrlich, dann sieht das schrecklich aus und ist beschissen zu lesen (4 fach geklammert, zuweisung, prüfung, invertierung, verknüpfund in einem... brrrrr, das klingt wie wenn ichs eilig hab.)

Abgesehn davon warum sollte break nicht gern gesehn sein? Es gibt Dinge die sich einfach nicht "schön" anders ausdrücken lassen.  

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Man könnte in diesem Fall das break ja auch durch

i = reihe.length;
ersetzen. Macht das selbe, aber man erkennt u.U. nicht, wie/warum. Da ist das break dann doch richtig schön  ;D
Man könnte in diesem Fall das break ja auch durch
i = reihe.length;
ersetzen. Macht das selbe, aber man erkennt u.U. nicht, wie/warum. Da ist das break dann doch richtig schön  ;D

Das hatte ich mir auch überlegt, aber man sollte wenn's nicht nötig ist den Zähler nicht unbedingt verändern, dass man ne Regelmässigkeit drin hat und schnell durchspielen kann wie er aussieht/aussehen sollte.
Ausserdem läuft man so sehr schnell in die Gefahr bei längeren for-Schleifen zu übersehen, dass man i neu setzt und hat plötzlich ne Exception weil man den Gültigkeitsbereich des Arrays verlässt.

Wenn du eine variante ohne 'break' haben willst, versuche es doch mal so:

String meldg = "Geben Sie eine Zahl ein (0 zum Beenden): ";
int[] reihe = new int(laenge);

int i = 0;
boolean status = true;
while((i < laenge) && status) {
  String input = Konsole.getInputInt(meldg);
  if(input != 0)
    reihe[i] = input;
  else
    status = false;
  i ++;
}

Oh, die Variable 'input' müsste vom Typ 'int' und nicht 'String' sein. Außerdem würde ich hier eher eine Liste statt einem Array verwenden.  ;)


« Was ist einfacher zu erlernen??Suchfunktion unter C++ »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...

Unicode
Unicode ist ein international anerkannter Standard, der als universeller Zeichencode ("Universal Code") dient und durch das Unicode-Konsortium entwickelt und verwaltet wi...

QR-Code
QR-Codes, die Abkürzung für "Quick Response Codes", sind eine Form von zweidimensionalen Barcodes. Damit lassen sich Informationen schnell und effizient speiche...