Arraywert um eins erhöhen?
Hallo zusammen,
ich habe folgendes Problem:
for (int i = 0; i < Spiel.length; i++) { if (Spiel[i] != 15) { Spiel[i]++; } else { Spiel[i] = 1; } }
Ich will, dass sich der Wert im Array um 1 erhöht und der Wert des Feldes mit dem Wert 15 gleich 1 gesetzt wird.
In den Feldern sind die Werte von 1-15 gespeichert.
Danke im Voraus!
3 Antworten
Kennst du auch den derzeitigen Zustand deines Programms? Wenn nicht, dann probiere ihn mal aus.
Habe folgendes Problem
Was denn für ein Problem? Der Code ist korrekt und macht genau das, was du beschrieben hast.
Eingabe:
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }
Ausgabe:
{ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1 }
Bemängeln könnte man nur, dass du die Java Conventions einhalten solltest: Attribut- und Variablenbezeichner werden mit einem kleinen Anfangsbuchstaben geschrieben.
? Der Code ist nicht korrekt, und liefert auch nicht dieses Ergebnis. Kann nicht..
Ich verstehe nicht, was am Code nicht korrekt sein soll. Hier ein minimales Programm:
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] spiel = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
for (int i = 0; i < spiel.length; ++i) {
if (spiel[i] != 15) {
spiel[i]++;
} else {
spiel[i] = 1;
}
}
System.out.println(Arrays.toString(spiel));
}
}
Kann man ausprobieren, der Output ist:
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1]
Genau das ist doch gewünscht, oder nicht? Das soll doch einfach nur ein Circular-Array-Shift sein?
Der Vergleich if (Spiel[i] != 15) { wird immer schief gehen, denn beim Schleifendurchlauf ist das int Array an Stelle 'i' stets mit einem Wert ungleich 15 gefüllt.
Ähm, nein...
int Spiel[] = new int[16];
for (int i=1; i<Spiel.length; i++) {
if (i==Spiel.length-1) {
Spiel[i] = 1;
} else {
Spiel[i] = i;
}
System.out.println("Spiel an index: "+i+", Wert: "+Spiel[i]);
}
Ich will ja nichts sagen, aber das schreibt dir einfach 0-14 an die jeweiligen Stellen im Array und ne 1 in das letzte Feld.
Er hat aber schon ein Array, welches mit Werten gefüllt ist und möchte jeweils die Werte um eins hochzählen, sofern das Feld des Arrays nicht den Wert 15 hat.
Nein, der Zähler beginnt bei 1.
Das Array wird an den Stellen 1 (Index 2) bis 14 mit dem numerischen Wert gefüllt. Array[15] = 1. Das entspricht der Anforderung. So habe ich es jedenfalls verstanden.
Soll das Array ab Index anders gefüllt werden, müssen die Zähler angepasst werden. Viel Erfolg
Jup er fängt bei Index 1 an und setzt den Wert des Feldes mit Index 1 auf 1.
Das gleiche macht er mit allen Arrayfeldern außer mit dem mit dem Index 15 (Zahl 16 eig. weil das Array mit 0 beginnt). Dort wird ne 1 eingesetzt.
0 wird ausgelassen, da es beim Erstellen bereits 0 ist.
Glaubste mir net?
int Spiel[] = new int[16];for (int i=1; i<Spiel.length; i++) { if (i==Spiel.length-1) { Spiel[i] = 1; } else { Spiel[i] = i; }}for(int i=0;i< Spiel.length;i++){ System.out.println("Pos: " + i + " Wert: " + Spiel[i]);}
Ich habs lediglich um eine Ausgabe aller Werte ergänzt. Ausgabe:
Pos: 0 Wert: 0Pos: 1 Wert: 1Pos: 2 Wert: 2Pos: 3 Wert: 3Pos: 4 Wert: 4Pos: 5 Wert: 5Pos: 6 Wert: 6Pos: 7 Wert: 7Pos: 8 Wert: 8Pos: 9 Wert: 9Pos: 10 Wert: 10Pos: 11 Wert: 11Pos: 12 Wert: 12Pos: 13 Wert: 13Pos: 14 Wert: 14Pos: 15 Wert: 1
Soll das Array ab Index anders gefüllt werden, müssen die Zähler angepasst werden. Viel Erfolg
Es muss nicht gefüllt werden, da es nach Fragestellung bereits Werte hat. Zudem ist das Array nach Fragestellung 15 Werte groß.
In den Feldern sind die Werte von 1-15 gespeichert.
Edit: Danke an den Editor an dieser Stelle -_-
? Der Code ist nicht korrekt, und liefert auch nicht dieses Ergebnis. Kann nicht..
Der Vergleich if (Spiel[i] != 15) { wird immer schief gehen, denn beim Schleifendurchlauf ist das int Array an Stelle 'i' stets mit einem Wert ungleich 15 gefüllt.
Daher wird das Array schlichtweg mit dem Wert "1" gefüllt ...