You are not logged in.

  • Login

Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Wednesday, November 11th 2009, 10:43am

boolean Übung hilfe

Hab hier eine interessante Aufgabe über boolean gefunden :
.......................................................................................

Schreiben Sie ein Konsole- Programm "LogicalExpressions" , das folgendes
leistet:

a) Es definiert vier Variable a, b, c, d vom Typ int sowie die Hilfsvariable result
vom Typ boolean. Weitere Hilfsvariable dürfen nach Bedarf definiert werden.

b) Es lässt Werte für a, b, c, d über die Konsole eingeben.

c) Es berechnet der Reihe nach die Wahrheitswerte der folgenden Aussagen und legt diese in
der Hilfsvariablen result ab. Nach jeder Berechnung wird result mit geeigneter
Beschriftung am Bildschirm ausgegeben.

Aussage 1: Mindestens eine der Variablen a, b, c, d hat einen Wert > 1.

Aussage 2: Mindestens eine, jedoch höchstens drei der Variablen a, b, c, d haben einen
Wert > 1.

Aussage 3: Genau eine der Variablen a, b, c, d hat einen Wert <0.

Aussage 4: Alle Variablen a, b, c, d, deren Werte > 0 sind, sind auch > 10.

Lösungshinweis: Für jede Aussage dürfen Sie höchstens eine if else Kontrollstuktur
verwenden.


........................................................................................................................

hab aber leider keinen plan wie ich das umsetzen soll hab bis jetzt noch nie boolean verwendet geschweige den if Schleifen kann mir bitte jemand helfen ???

Bis jetzt hatte ich nur folgende bescheidene Ergüsse

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class boolescheAus {
		public static void main (String[] args)
			{
							
				int a = Console.readInt("Bitte geben Sie a ein");
				int b = Console.readInt("Bitte geben Sie b ein");
				int c = Console.readInt("Bitte geben Sie c ein");
							
				boolean reault = true;
							
							
				if ()
				{
								
								
								
								
								
								
								
							}
							
						
							
	}
}


Weiter komm ich nicht auch nicht nach langem googlen:(

Bitte antwortet so schnell wie möglich ist echt wichtig :cursing: !!!

2

Wednesday, November 11th 2009, 11:39am

Also dazu, wie man grundsätzlich eine if-Bedingung in Java verwendet, gibt es nun wirklich reichlich Material im Netz.
Du musst schon ein wenig mehr Eigeninitiative zeigen ...

This post has been edited 1 times, last edit by "umt" (Nov 13th 2009, 3:01pm)


3

Wednesday, November 11th 2009, 11:40am

hallo,

um die aufgabe zu lösen solltest du dir mal den || (ODER) und den && (UND) operator anschaun. damit ist das ganze leicht in den if-abfragen zu bewältigen!

thx, truespin

4

Wednesday, November 11th 2009, 11:41am

hust hust...

Quoted

if-Schleife
???
da solltest du nochmal drüber nachdenken...

thx, truespin

5

Friday, November 13th 2009, 3:03pm

Ähem ... hab's korrigiert. :whistling:

6

Friday, November 13th 2009, 3:48pm

hey leute danke für die Antworten....
Danke auch an truespin war ein sehr nützlicher tipp mit den Operatoren habe nun folgendes zusammen gewerkelt;):

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
public class boolescheAus {
	public static void main (String[] args)
	{
 
		int a = Console.readInt("Bitte geben Sie a ein");
		int b = Console.readInt("Bitte geben Sie b ein");
		int c = Console.readInt("Bitte geben Sie c ein");
		int d = Console.readInt("Bitte geben Sie d ein");
		boolean resault;
 
		// Aussage 1	
		   if(a>1||b>1||c>1||d>1)
		{
		resault = true;
		System.out.println(resault);
		}
		else
		{
			resault = false;
			System.out.println(resault);
		}	
 
 
		// Aussage 2 
	if ((a>1)^(b>1)^(c>1)^(d>1)&& !((a>1) && (b>1) && (c>1) && (d>1)))
	{
		resault = true;
	System.out.println(resault);
	}
	else
	{
		resault = false;
		System.out.println(resault);
	}	
	// Aussage 3
 
	if (((a<0)&&!((b<0)^(c<0)^(d<0)))^
	   ((b<0)&&!((a<0)^(d<0)^(c<0)))^
		((c<0)&&!((a<0)^(b<0)^(d<0)))^
		((d<0)&&!((a<0)^(b<0)^(c<0))))
	{
		resault = true;
		System.out.println(resault);
	}		
	else
		{
		resault = false;
		System.out.println(resault);
		}
	// Aussage 4
	if (!(((a>0 && a>10)^(b>0 && b>10)^(c>0 && c>10)^(d>0 && d>10))&
		((a<0 && a<10)^(b<0 && b<10)^(c<0 && c<10)^(d<0 && d<10))))
	{
		resault = true; 
		System.out.println(resault);
	}	
 
	else 
	{
	resault = false;
	System.out.println(resault);
	}
 
}							
 
}


So nun funzt das Ding auch fast so wie es soll wenn Aussage 4 nicht wäre, die gibt nämlich immer das Gegenteil von dem aus was sie soll deswegen auch die Nigierung falls sich jemand wundert die sollte alles ja umdrehn aber es kommt immer noch das Gegenteil raus:(
finde absolut nicht den Fehler in Aussage 4 findet ihr ihn vieleicht ????
Falls ihr noch andere Verbesserungsvorschläge habt bezüglich Formatierung oder vieleicht möglichkeiten zur Vereinfachung findet bin für alles offen ????

Danke schon mal im Vorraus

7

Friday, November 13th 2009, 4:37pm

Erstmal ein ganz wichtiger Hinweis:
Du benutzt ziemlich oft den ^-Operator. Das ist aber erstmal ein bitwise-Operator, die man in logischen Ausdrücken nicht verwenden sollte (auch wenn sie wohl auch für boolean Werte definiert sind). Zum anderen ist der ^-Operator ein XOR und kein OR, du verwendest ihn aber wie einen OR-Operator, was zu falschen Ergebnissen führen kann. Nimm stattdessen einfach den ||-Operator.
Bei Aussage 4 müsste, soweit ich das auf die schnelle Überblicken kann, es reichen, wenn du das "nicht" vorne wieder wegnimmst, und auch nur die erste Zeile benutzt. Dann alle ^ durch || ersetzen und es müsste eigentlich hinhaun.


Edit: Achja, noch ne kleinigkeit:
statt

Java Quellcode

1
2
3
4
5
6
7
8
if (irgendwas)
{
   result = true;
}
else
{
   result = false;
}


kann man auch einfach das schreiben:

Java Quellcode

1
result = (irgendwas);

"irgendwas" ist nämlich ein boolscher Ausdruck und liefert somit true oder false zurück. Daher kann man sich das if-Konstrukt sparen.

8

Friday, November 13th 2009, 7:52pm

Danke Ronder für dich vielen wichtigen tipps nun funzt auch alles Wunderbar... Jedoch die 2 zeile in Aussage 4 wird gebraucht da man sonst nicht die ganze Aussage formuliert aber gut kann dir ja egal sein ;)

Kannst du mir vileicht noch kurz nen genaues Beispiel zu if(irgendwas) posten bekomm des nicht so ganz hin da ja can not resolve irgendwas ........????? ?(

9

Friday, November 13th 2009, 9:02pm

Naja, man könnte deinen Code für die erste Aussage so umformulieren:

Java Quellcode

1
2
result = ( a > 1 || b > 1 || c > 1 || d > 1);
System.out.println(result);

aber das is nur ne Kleinigkeit, am besten machst dus so, wie du es am übersichtlichsten findest.


Aussage 4 war doch:
Aussage 4: Alle Variablen a, b, c, d, deren Werte > 0 sind, sind auch > 10.

Dass du die 2. Zeile einfach weglassen kannst, war wirklich nicht ganz richtig. Aber du prüfst ja z.B. (a<0 && a<10). Wenn a aber kleiner als 0 ist, ist a natürlich auch kleiner als 10 ;) Und außerdem hast du denn Fall a=0 nicht abgedeckt.

10

Friday, November 13th 2009, 11:07pm

ja du hast vollkommen recht ich habe hier mal ein paar Testergebnisse kopiert hier ist auch in der Zeile -5 -4 -3 -2 sehr gut zu erkennen warum man bei Aussage 4 die 2 Zeile braucht



Eingaben Aussage 1 Aussage 2 Aussage 3 Aussage 4

-1 -2 0 15 true true false true

3 4 -1 8 true true true false

-6 15 -8 11 true true false true

2 15 18 20 true false false false

-5 -4 -3 -2 false false false true

-4 -5 3 2 true true false false

20 30 20 40 true false false true

1 0 1 0 false false false false

-1 0 0 0 false false true true

Social bookmarks