【问题标题】:Truth table fun, Java真值表乐趣,Java
【发布时间】:2017-07-09 06:23:15
【问题描述】:

我的程序目前正在打印出一个预编程的真值表,然后在每行的末尾加上正确的字符。我想超越这个程序,但我碰壁了,我从来没有将列的输出链接到 for 循环中的函数调用,而且我似乎在网上找不到任何接近它的东西.基本上我想要做的是,如果 p 列中出现 0,我将分配 p char 'F',如果出现 1,我将分配 p char 'T'。我的计划代码如下:

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

等等

【问题讨论】:

  • 不清楚你想做什么。
  • 如果没有使用真值表,我可以看出那篇文章没有意义。我现在已经更新了帖子。
  • 如果 p 列中出现 0,我将分配 char 'F' 分配给什么?你想用它做什么?只打印 F 而不是 0?
  • 哦,我的 LProp 已经处理了所有这些,它会接受这些 T 和 F 的输入并通过几个函数运行它。或逻辑(与逻辑(非逻辑(q),与逻辑(r,非逻辑(p))),非逻辑(与逻辑(r,非逻辑(p))))

标签: java multiple-columns truthtable


【解决方案1】:

您可以编写一个简单的辅助方法来获取给定布尔值的正确 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));

【讨论】:

    猜你喜欢
    • 2019-07-23
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 2010-12-24
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多