Estou fazendo um exercício onde devo converter minha tabela da verdade de operadores de boolean para binario. Converti para Int mas tenho problema com um dos itens ao usar operador !.
/*
Este programa é uma tabela da verdade para
operadores logicos - convertidos para binario
*/
class tabela {
// um programa java começa com uma chamada a main().
public static void main (String args[]) {
boolean p,q;
System.out.println ("P\tQ\tAND\tOR\tXOR\tNOT");
p = true; q = true;
byte x = (p) ? 1 : 0;
byte y = (q) ? 1 : 0;
System.out.print ( x + "\t" + y + "\t");
System.out.print((x&y) + "\t" + (x|y) + "\t");
System.out.println ((x^y) + "\t" + (!x));
p = true; q = false;
System.out.print ( p + "\t" + q + "\t");
System.out.print((p&q) + "\t" + (p|q) + "\t");
System.out.println ((p^q) + "\t" + (!p));
p = false; q = true;
System.out.print ( p + "\t" + q + "\t");
System.out.print((p&q) + "\t" + (p|q) + "\t");
System.out.println ((p^q) + "\t" + (!p));
p = false; q = false;
System.out.print ( p + "\t" + q + "\t");
System.out.print((p&q) + "\t" + (p|q) + "\t");
System.out.println ((p^q) + "\t" + (!p));
}
}
Alguma dica?
class Tabela {
public static void main(String args[]) {
imprimeCabecalho();
imprimeValores(true, true);
imprimeValores(true, false);
imprimeValores(false, true);
imprimeValores(false, false);
}
private static void imprimeCabecalho() {
System.out.println("P\tQ\tAND\tOR\tXOR\tNOT");
}
private static void imprimeValores(boolean p, boolean q) {
System.out.print(toByte(p) + "\t" + toByte(q) + "\t");
System.out.print(toByte(p & q) + "\t" + toByte(p | q) + "\t");
System.out.println(toByte(p ^ q) + "\t" + toByte(!p));
}
private static byte toByte(boolean value) {
return (byte) (value ? 1 : 0);
}
}
1 curtida
eeeita, aí sim, totalmente diferente daquilo que eu estava imaginando.
Achei que sempre eu teria que trabalhar com meu codigo dentro de Main.
Obrigado Staroski.
Não, o método main é só o ponto de entrada da sua aplicação.
Este é uma exemplo muito simples, mas no dia a dia você também não vai ficar criando métodos estáticos, vai criar um objeto e executar métodos dele.
Me perdoe a ignorancia. mas estava entendendo que sempre teria que declarar uma variavel ou objeto, este caso, no seu codigo voce usou o main para declarar objetos imprime cabecalho e o imprimevalores e seus estados… no metodo imprimecabecalho somente fez o print e no metodo imprimevalores usou ai os operadores logicos para cada objeto?.
O main neste caso funciona apenas para invocar os métodos, como é de boa prática (O mesmo para entidades, objetos etc)
O resto tudo é feito através dos métodos, deixando assim mais legível o código e arrumado.
Como os métodos estão na mesma classe, ele apenas invocou os mesmos, sem precisar declarar um objeto.
Se cada método estivesse em outra classe, ele teria de instanciar um objeto do tipo daquela classe e assim chamar o método. Ex: objeto1.método1();
Entendi. Vejo que tenho milhoes de anos luz ainda a percorrer neste aprendizado.
Agradeço a ajuda aí.
Uma ultima coisa, tem algum documento que você indicaria para de fato entender a estrutura geral, tipo, Metodos, classes, variais, objeto…etc etc? Estou usando um livro Java para iniciantes da oracle, está sendo legal.