2017-07-09 3 views
-4

Mon programme imprime actuellement une table de vérité préprogrammée suivie du caractère correct à la fin de chaque ligne. Je voudrais aller au-delà de ce programme, mais j'ai couru dans un mur, je n'ai jamais lié la sortie d'une colonne à un appel de fonction dans une boucle for, et je n'arrive pas à trouver quelque chose près en ligne . Essentiellement, ce que je veux faire, c'est que si 0 apparaît dans la colonne p, j'attribuerais p char 'F', et si un 1 apparaît, j'attribuerais p char 'T'. Mon code prévu est le suivant:Table de vérité amusante, Java

public static void main(String args[]) 
{ 
    char p = 'T'; 
    char q = 'F'; 
    char r = 'T'; 
    int rows = (int) Math.pow(2,3); 

    for (int i=0; i<rows; i++) { 
     for (int j=3-1; j>=0; j--) { 
      System.out.print((i/(int) Math.pow(2, j))%2 + " "); 

     } 
     System.out.println(LProp(p,q,r)); 
    } 

} 

Voici ma fonction LProp:

private static char LProp(char p, char q, char r) 
{ 
    // Logical expression 
    //(~q /\r /\~p) \/(~(r \/~p)) 

    return return ORlogic(ANDlogic(NOTlogic(q),ANDlogic(r,NOTlogic(p))), NOTlogic(ORlogic(r,NOTlogic(p)))); 
} 

Est-il utile, ou même possible d'assigner les colonnes 1 et de 0 à mes chars? La sortie, en passant, est une table de 4 colonnes avec 8 lignes sortant le char T ou F dans la 4ème colonne.

p q r LProp(p,q,r) 
0 0 0 F 
0 0 1 T 

etc.

+5

Ce que vous essayez de faire n'est pas clair. – Eran

+0

Si on n'a pas travaillé avec des tables de vérité je pourrais voir comment ce post n'aurait pas de sens. J'ai maintenant mis à jour le post. – HamHat

+0

* si 0 apparaît dans la colonne p j'attribuerais le caractère 'F' * Attribuer à quoi? qu'est-ce que tu veux faire avec? il suffit d'imprimer F au lieu de 0? – Guy

Répondre

0

Vous pouvez écrire une méthode simple d'aide pour obtenir la valeur char correcte pour une valeur booléenne donnée:

public static char getCharForBoolean(boolean value) 
{ 
    if (value) { 
     return 'T'; 
    } else { 
     return 'F'; 
    } 
} 

Vous pouvez optimiser cette méthode en écrivant quelque chose comme return value ? 'T' : 'F'; si vous comprenez l'opérateur ?.

Utilisez cette méthode dans votre code où vous voulez le caractère au lieu de la valeur booléenne.

bool result = LProp(p, q, r); // assuming it does return a boolean value 
System.out.println(getCharForBoolean(result));