Arraywert um eins erhöhen?

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.


BaumeisterSepp  09.01.2018, 21:33

? 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 ...


0
tavkomann  09.01.2018, 21:44
@BaumeisterSepp
? 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...

1
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]);
}

BaumeisterSepp  09.01.2018, 21:27

Dies liefert dir das gewünschte Ergebnis- grüße

0
Etter  10.01.2018, 02:00

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.

0
BaumeisterSepp  10.01.2018, 20:40
@Etter

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

0
Etter  11.01.2018, 19:44
@BaumeisterSepp

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 -_-

0