Zdravím, učím se programovat z knihy Java 7 výukový kurz a nastal problém , s ktorím si neviem rady.
Týka sa to jedného programu v knihe (str.80/81).
Zadanie : V tomto projektu vytvoříte program, který zobrazí pravdivostní tabulku pro logické
operátory jazyka Java. Sloupce v tabulce musíte zarovnat. Tento projekt využívá
několik rysů probíraných v této kapitole, včetně řídicích sekvencí a logických operátorů
Javy. Kromě toho ilustruje rozdíly v prioritě mezi aritmetickým operátorem +
a logickými operátory.
Kód:
class TabulkaLogickeOp {
public static void main(String args[]) {
boolean p, q;
System.out.println("P\tQ\tAND\tOR\tXOR\tNOT");
p = true; q = true;
System.out.print(p + "\t" + q +"\t");
System.out.print((p&q) + "\t" + (plq) + "\t");
System.out.println((pAq) + "\t" + (!p));
p = true; q = false;
System.out.print(p + "\t" + q +"\t");
System.out.print((p&q) + "\t" + (piq) + "\t");
System.out.println((pAq) + "\t" + (!p));
p = false; q = true;
System.out.print(p + "\t" + q +"\t");
System.out.print((p&q) + "\t" + (plq) + "\t");
System.out.println((pAq) + "\t" + (!p));
p = false; q = false;
System.out.print(p + "\t" + q +"\t");
System.out.print((p&q) + "\t" + (plq) + "\t");
System.out.println((pAq) + "\t" + (!p));
}
}
Zkompilovaný program:
p Q AND OR XOR NOT
true true true true false false
true false false true true false
false true false true true true
false false false false false true
Tento program mi fungoval bez problémov, ale jednou z daľších úloh bolo :
Zkuste program upravit tak, aby místo "true" a "false" zobrazoval jedničky
a nuly. To ovšem vyžaduje více úsilí, než se na první pohled může zdát!
Takto som upravil program:
public class priklad {
public static void main(String args[]) {
int p, q, a, b, c, d ;
System.out.println("P\tQ\tAND\tOR\tXOR\tNOT");
p = 1; q = 1;
a = (int) (p&q);
b = (int) (p^q);
c = (int) (p|q);
d = (int) (!p);
System.out.print(p + "\t" + q + "\t");
System.out.print(a + "\t" + c + "\t");
System.out.println(b + "\t" + d + "\t");
p = 0; q = 1;
a = (int) (p&q);
b = (int) (p^q);
c = (int) (p|q);
d = (int) (!p);
System.out.print(p + "\t" + q + "\t");
System.out.print(a + "\t" + c + "\t");
System.out.println(b + "\t" + d + "\t");
p = 1; q = 0;
a = (int) (p&q);
b = (int) (p^q);
c = (int) (p|q);
d = (int) (!p);
System.out.print(p + "\t" + q + "\t");
System.out.print(a + "\t" + c + "\t");
System.out.println(b + "\t" + d + "\t");
p = 0; q = 0;
a = (int) (p&q);
b = (int) (p^q);
c = (int) (p|q);
d = (int) (!p);
System.out.print(p + "\t" + q +"\t");
System.out.print(a + "\t" + c + "\t");
System.out.println(b + "\t" + d + "\t");
}
}
A tu sa konečne dostávam k problému celý kód mi funguje až na : "d = (int) (!p);" to mi ukazuje chybu a netuším ako to mam vyriešiť.
Takto vyzerá zkompilovaný program bez "d = (int) (!p);"
P Q AND OR XOR NOT
1 1 1 1 0
0 1 0 1 1
1 0 0 1 1
0 0 0 0 0