2017-07-09 60 views
-4

我的程序当前正在打印出一个预先编程的真值表,然后在每行末尾加上正确的字符。我想超越这个程序,但是我碰到了一堵墙,我从来没有将列的输出链接到for循环中的函数调用,我似乎无法在网上找到任何接近它的东西。实质上,我想要做的是,如果0出现在p列中,我会分配p字符'F',如果出现1,我会分配p字符'T'。我的计划代码如下:真理表的乐趣,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)); 
    } 

} 

这里是我的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)))); 
} 

它是值得的,甚至可以将列1和0分配给我的字符? 顺便说一下,输出是一个4列表格,其中8行输出第4列中的char T或F.

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

+5

目前尚不清楚你正在尝试做什么。 – Eran

+0

如果一个人没有使用真值表,我可以看到这个帖子怎么没有意义。我现在更新了这篇文章。 – HamHat

+0

*如果0在p列中出现,我将分配字符'F'*分配给什么?你想用它做什么?只是打印F而不是0? – Guy

回答

0

你可以写一个简单的辅助方法以获得正确的char值对于给定的布尔值:

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

您可以通过编写类似return value ? 'T' : 'F';如果优化此方​​法你了解?运营商。

在代码中使用此方法,而不是布尔值。

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