Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich möchte eine Methode erstellen, die ein Array von booleschen Werten als Argument übergeben bekommt und es soll true ausgegeben werden, wenn eines der Elemente im Array true ist. Ich habe schon einiges versucht, komme aber nicht so recht weiter. Trotzdem mal mein Ansatz. Würde mich über jeden Tipp freuen!
Code:
private static boolean[] einwahrer(boolean[] werte) {
boolean[] einer = new boolean[0];
if(werte[] = 0) einer = true;{
System.out.println("true");
} else if(werte[] = 1) {
System.out.println("false");
return null;
}
du hast unmengen an syntaxfehlern in deinem code! Und auch rein logisch sind da viele ungereimtheiten drin.
Ich empfehle dir dringend ein Anfängerbuch für die Grundlagen: http://openbook.rheinwerk-verlag.de/javainsel/
Um zu prüfen ob ein Wert true ist, musst du mit einer Schleife alle Einträge im Array durchlaufen und sobald ein Wert true ist, gibst du true zurück (oder machst ein println, was aber nicht so schöner stil ist).
Um dann true auszugeben wäre folgendes gut: System.out.println(einwahrer(arr));
Danke für deine Antwort. Ich glaube, mein Problem ist auch, dass ich nicht recht weiß, wie ich ein Boolean Array einlese, das nur die Werte true und False enthält. Hast du da noch einen Tipp für mich?
Danke! Jetzt macht die Methode aber noch nicht ganz was ich will. Es soll nur true ausgegeben werden, wenn mindestens ein Element true ist. Wenn alle Elemente false sind, soll auch false ausgegeben werden. Habe mir folgendes gedacht
Code:
public class Wahrheit {
public static void main(String[] args) {
boolean[] werte = {true, false};
boolean n = all(werte);
System.out.println(n);
}
private static boolean all(boolean[] werte) {
boolean b = StdIn.readBoolean();
boolean[] alle = new boolean[0];
for(int i = 0; i < alle.length; i++)
alle[i] = b;
for(boolean wahr: alle)
if(wahr){
System.out.println(wahr);
return true;
for(int j = 0; j < alle .length;j++)
alle[j] = b;
if(!wahr){
System.out.println(!wahr);
}
return false;
}
}
}
Der Compiler schreibt jetzt aber Unreachable code. Was mache ich falsch?
rücke einfach mal deinen Code ordentlich ein, dann siehst du vermutlich direkt den Fehler (Klammerung).
Falls du Eclipse nutzt, kannst du mit Strg+Shift+F den Code automatisch einrücken lassen
eclipse benutze ich nicht. Habe mal ein bisschen was versucht, komme aber nicht so recht weiter. Zwischenzeitlich sagte der Compiler, dass "wahr" nicht deklariert wäre, was ich dann noch einmal getan habe. Klappt aber trotzdem noch nicht.
Code:
public class Wahrheit {
public static void main(String[] args) {
// Sie duerfen hier fuer Ihre eigenen Zwecke eine Ausgabe programmieren.
// Dies ist aber kein Bestandteil der Aufgabe.
boolean[] werte = {true, false};
boolean n = all(werte);
System.out.println(n);
}
private static boolean all(boolean[] werte) {
boolean b = StdIn.readBoolean();
boolean[] alle = new boolean[0];
for(int i = 0; i < alle.length; i++)
alle[i] = b;
for(boolean wahr: alle)
if(wahr){
System.out.println(wahr);
}
return true;
for(int j = 0; j < alle .length;j++){
alle[j] = b;
for(boolean wahr: alle){
if(!wahr){
System.out.println(!wahr);{
return false;
}
}
}
}
}
habe deinen code mal eingerückt, vielleicht siehst du jetzt die ganzen falschen Klammerungen:
Java:
public class Wahrheit {
public static void main(String[] args) {
// Sie duerfen hier fuer Ihre eigenen Zwecke eine Ausgabe programmieren.
// Dies ist aber kein Bestandteil der Aufgabe.
boolean[] werte = {true, false};
boolean n = all(werte);
System.out.println(n);
}
private static boolean all(boolean[] werte) {
boolean b = StdIn.readBoolean();
boolean[] alle = new boolean[0];
for(int i = 0; i < alle.length; i++)
alle[i] = b;
for(boolean wahr : alle)
if(wahr){
System.out.println(wahr);
}
return true; // alles was hier nach kommt ist unerreichbar
for(int j = 0; j < alle .length;j++){
alle[j] = b;
for(boolean wahr: alle){
if(!wahr){
System.out.println(!wahr);{
return false;
}
}
}
}
}
}
wie gesagt, durch dein return true an der stelle, wird die methode sofort verlassen, sodass alles was danach kommt nicht mehr ausgeführt wird.
und auch sonst ist dein Code ziemlich unnötig kompliziert und teilweise auch falsch.
Um das ganze mal abzukürzen, hier mal eine mögliche Lösung.
sobald true in dem array gefunden wird, wird true zurückgegeben.
das return false wird also nur ausgeführt, wenn in dem Array kein true vorkommt. => also wenn alles false ist