Arrays; Frage zur Ausgabe

  • Themenstarter Themenstarter Billy-g
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
B

Billy-g

Gast
also folgender code:

public class Array {

public static void erhoehe(int[] a, int wert) {
int[] b = new int[a.length];
for (int i = 0; i < a.length; i++) {
b = a + wert;
}
a = b;
}
public static void main(String[] args) {
int[] b = new int[]{1, 4, 9};
erhoehe(b, 2);
System.out.println(b[1]);
}
}

laut netbeans ist die ausgabe 4 aber das verstehe ich nicht. in der main methode werden doch die indizes um 2 erhöht.. warum ist die ausgabe dann nicht 6 bei b[1]?
kann mir das bitte einer erklären?

oder kann ich die methode in main nicht so schreiben? habe das gefühl, sie wird garnicht beachtet
 
Du arbeitest mit inneren variablen. Die sind "vergesslich"

mach aus

Code:
int[] b = new int[]{1, 4, 9};

eine membervariable und es sollte funktionieren

PS: Bitte die Codehervohebefunktion benutzen. Da wird einem ja schwarz vor augen
 
Hallo,

die Methosde wird schon beachtet und ausgeführt. Aber das Problem liegt woanders.
Das Array b in der Main wird ja der Medthode erhöhe übergeben.
Aber nicht callByReference.
Code:
public class Array { 
	static int[] b = new int[] { 1, 4, 9 };
	
	public static void erhoehe(int[] a, int wert) {
		for (int i = 0; i < a.length; i++) {
			b[i] = a[i] + wert;
		}
		a = b;
	}

	public static void main(String[] args) {
		erhoehe(b, 2);
		System.out.println(b[1]);
	}

Grüße Oli
 
Nochmal ich;

naja und wenn schon dann richtig:

Code:
public class Array { 
	static int[] b = new int[] { 1, 4, 9 };
	
	public static void erhoehe( int wert) {
		for (int i = 0; i < b.length; i++) {
			b[i] = b[i] + wert;
		}
	}

	public static void main(String[] args) {
		erhoehe(2);
		System.out.println(b[1]);
	}

Grüße Oli
 
Probier mal folgenden abgeänderten Code aus: Ich denke, dann findest du den Fehler.
Code:
package hpsdia;

public class Array {

	public static void erhoehe(int[] a, int wert) {
		int[] b = new int[a.length];
		for (int i = 0; i < a.length; i++) {
			b[i] = a[i] + wert;
		}
		System.out.println(b[1]); // neuer Code
		a = b;
		System.out.println(b[1]); // neuer Code
	}

	public static void main(String[] args) {
		int[] b = new int[] { 1, 4, 9 };
		erhoehe(b, 2);
		System.out.println(b[1]);
	}
}

Du arbeitest mit "2 (verschiedenen) lokal bekannten Arrays".
 
Um ein ganzes Array auszugeben, kannst du übrigens

Code:
System.out.println(java.util.Arrays.toString(array));

verwenden.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben