Java: Array wird nicht richtig ausgegeben?

2 Antworten

Deine eigentliche Frage wurde ja schon beantwortet. Ersetze die beiden "System.out.print(noten);" durch "System.out.println(Arrays.toString(noten));"

Da sind aber noch ein paar mehr Fehler:

  • Du prüfst für jede Note, ob sie kleiner als 0 und größer als 5 ist. Eine Zahl kann aber nicht gleichzeitig kleiner als 0 und größer als 5 sein, von daher wird der Block nie laufen. Ersetze das "Und" (&&) durch ein "Oder" (||).
  • In CheckNoten returnst du für jeden Schleifendurchlauf einen Wert. Da eine Methode aber beim ersten return beendet wird, wird nur der erste Wert überprüft.
  • Du willst die Noten einmal vor dem CheckNoten und einmal danach ausgeben, aber du veränderst die Noten nirgendwo, daher wird dir immer zweimal dasselbe Array ausgegeben.
  • CheckNoten gibt ein boolean-Array zurück, was du aber nur mit einem einzelnen boolean-Wert füllst. Du kannst also auch gleich ein boolean zurückgeben, was dir dann anzeigt, ob der erste Wert eine gültige Note ist, oder nicht.
  • Deine Klasse heißt genauso, wie eine der Variablen. Laut den Code-Konventionen für Java wird empfohlen, Klassennamen immer groß (bzw. UpperCamelCase) zu schreiben und Variablennamen immer klein (bzw. lowerCamelCase) zu schreiben. Dadurch wird der Code einerseits für andere Entwickler besser lesbar und andererseits vermeidest du Bugs.

Ich denke mal, du hattest vor, dass du dir für jede Note ausgeben lässt, ob sie im gültigen Bereich ist, oder nicht. Das würde dann so gehen:

import java.util.Arrays;

public class Noten {
	public static void main(String[] args) {
		int[] noten = {1, 5, 6, -1, 2};
		System.out.println(Arrays.toString(noten));
		System.out.println(Arrays.toString(checkNoten(noten)));
	}
	
	private static boolean[] checkNoten(int[] noten) {
		boolean[] result = new boolean[noten.length];
		
		for (int i = 0; i < noten.length; i++) {
			result[i] = noten[i] >= 1 && noten[i] <= 5;
		}
		
		return result;
	}
}

Was du ausgibst, ist die Referenz auf das Array, also quasi die Adresse.

Soweit ich weiß, musst du durch alle Elemente des Arrays durchiterieren und die Elemente einzeln ausgeben. Dafür kannst du dir einfach eine static methode schreiben.

Oder du nutzt die Methode Arrays.toString()

dafür musst du java.util.Arrays importieren.

also:

import java.util.Arrays;

und dann

System.out.println(Arrays.toString(namedeinesarrays));
bschbaum 
Fragesteller
 13.06.2022, 21:11

Danke! Und wie kann ich die true false werte printen?

0
orochi02  14.06.2022, 00:07
@bschbaum

sorry aber deine checknoten methode ist komplett unverständlich

was genau checkst du und wieso checkst du ob nh note <0 aber >5? das macht irnwie keinen sinn, da nur eine 6 unter diesem rahmen fällt?

außerdem hast du als note eine -1 aber wenn du genau drüber nachdenkst ist das die zahl negativ eins und nicht die note eins minus

0