- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试复制一种在 C# 中将真值表转换为 bool 表达式的方法。我已经能够生成一个 3 变量 (a、b、c) 真值表并将其显示在多行文本框上。我创建了另外八个文本框供用户决定每个输入的输出:true(1)
或 false(0)
。但是在生成表格之后,我该如何显示所有具有 true
值的输出?
public partial class Form1 : Form
{
public Form1() => InitializeComponent();
string newLine = Environment.NewLine;
bool a, b, c, d;
private void Form1_Load(object sender, EventArgs e)
{
textBox1.AppendText(newLine + "A" + "\t" + "B" + "\t" + "C" + newLine);
textBox1.AppendText("______________________________" + newLine);
a = true; b = true; c = true;
textBox1.AppendText(newLine + a + "\t" + b + "\t" + c +newLine);
textBox1.AppendText("______________________________" + newLine);
a = true; b = true; c = false;
textBox1.AppendText(newLine + a + "\t" + b + "\t" + c + newLine);
textBox1.AppendText("______________________________" + newLine);
a = true; b = false; c = true;
textBox1.AppendText(newLine + a + "\t" + b + "\t" + c + newLine);
textBox1.AppendText("______________________________" + newLine);
a = true; b = false; c = false;
textBox1.AppendText(newLine + a + "\t" + b + "\t" + c + newLine);
textBox1.AppendText("______________________________" + newLine);
a = false; b = true; c = true;
textBox1.AppendText(newLine + a + "\t" + b + "\t" + c + newLine);
textBox1.AppendText("______________________________" + newLine);
a = false; b = true; c = false;
textBox1.AppendText(newLine + a + "\t" + b + "\t" + c + newLine);
textBox1.AppendText("______________________________" + newLine);
a = false; b = false; c = true;
textBox1.AppendText(newLine + a + "\t" + b + "\t" + c + newLine);
textBox1.AppendText("______________________________" + newLine);
a = false; b = false; c = false;
textBox1.AppendText(newLine + a + "\t" + b + "\t" + c + newLine);
textBox1.AppendText("______________________________" + newLine);
}
private void button1_Click(object sender, EventArgs e)
{
//Grab true value outputs and display in string
}
}
上表是一个例子。我想以某种方式显示真实的输出值:
结果如下:假 真 真真假真真 真 假真真假
最佳答案
尝试封装您的 TruthItem(连同计算 TruthValue 的逻辑)。那么真值表的操作就很容易了(生成、迭代、计算等)
这是示例控制台应用程序。它没有您的文本框,但您会明白的。
public abstract class ThreeItemTruthRow
{
protected ThreeItemTruthRow(bool a, bool b, bool c)
{
A = a; B = b; C = c;
}
public bool A { get; protected set; }
public bool B { get; protected set; }
public bool C { get; protected set; }
public abstract bool GetTruthValue();
}
public class MyCustomThreeItemTruthRow : ThreeItemTruthRow
{
public MyCustomThreeItemTruthRow(bool a, bool b, bool c)
: base(a, b, c)
{
}
public override bool GetTruthValue()
{
// My custom logic
return (!A && B && C) || (A && !B && C) || (A && B && !C) || (A && B && C);
}
}
class Program
{
static void Main(string[] args)
{
var myTruthTable = GenerateTruthTable().ToList();
//Print only true values
foreach (var item in myTruthTable)
{
if (item.GetTruthValue())
Console.WriteLine("{0}, {1}, {2}", item.A, item.B, item.C);
}
////Print all values
//foreach (var itemTruthRow in myTruthTable)
//{
// Console.WriteLine("{0}, {1}, {2}", itemTruthRow.A, itemTruthRow.B, itemTruthRow.C);
//}
////Print only false values
//foreach (var item in myTruthTable)
//{
// if (!item.GetTruthValue())
// Console.WriteLine("{0}, {1}, {2}", item.A, item.B, item.C);
//}
Console.ReadLine();
}
public static IEnumerable<MyCustomThreeItemTruthRow> GenerateTruthTable()
{
for (var a = 0; a < 2; a++)
for (var b = 0; b < 2; b++)
for (var c = 0; c < 2; c++)
yield return new MyCustomThreeItemTruthRow(
Convert.ToBoolean(a),
Convert.ToBoolean(b),
Convert.ToBoolean(c));
}
}
编辑(包括 WinForm 的示例代码):
使用并引用上面的类(ThreeItemTruthRow 和 MyCustomThreeItemTruthRow)。
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void GenerateButton_Click(object sender, EventArgs e)
{
OutputTextBox.Clear();
OutputTextBox.Text += "A\tB\tC\r\n";
OutputTextBox.Text += GetHorizontalLineText();
var myTruthTable = GenerateTruthTable().ToList();
foreach(var item in myTruthTable)
{
OutputTextBox.Text += GetFormattedItemText(item);
OutputTextBox.Text += GetHorizontalLineText();
}
}
private void ShowTrueValuesButton_Click(object sender, EventArgs e)
{
OutputTextBox.Clear();
OutputTextBox.Text += "True Values\r\n";
OutputTextBox.Text += "A\tB\tC\r\n";
OutputTextBox.Text += GetHorizontalLineText();
var myTruthTable = GenerateTruthTable().ToList();
foreach(var item in myTruthTable)
{
if(item.GetTruthValue())
OutputTextBox.Text += GetFormattedItemText(item);
}
}
private static string GetHorizontalLineText()
{
return "-----------------------------------------------\r\n";
}
private static string GetFormattedItemText(MyCustomThreeItemTruthRow item)
{
return string.Format("{0}\t{1}\t{2}\r\n", item.A, item.B, item.C);
}
private static IEnumerable<MyCustomThreeItemTruthRow> GenerateTruthTable()
{
for (var a = 0; a < 2; a++)
for (var b = 0; b < 2; b++)
for (var c = 0; c < 2; c++)
yield return new MyCustomThreeItemTruthRow(
Convert.ToBoolean(a),
Convert.ToBoolean(b),
Convert.ToBoolean(c));
}
}
关于c# - bool 逻辑/真值表和输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14925277/
我想获取百分比值大于 90% 的所有项,但该部分的顺序无关紧要。这是一个例子: Person Score Location 1 91 US 2
在大多数语言中,包括 Python,变量的真实值可以在条件表达式中隐式使用,即: is_selected = True If is_selected: #do some
是否可以将 hibernate 设置为将 -1 而不是 1 作为数据库中 boolean 字段的真值?我需要 -1 来保持与其他 Delphi 程序的兼容性。 最佳答案 @Type(type="com
使用文档运行 rasa_core 示例 › python3 -m rasa_core.run -d models/dialogue -u models/nlu/default/current 并在对话
如果我的对象包含一个具有真值的键,我真的很困惑如何返回一个简单的真/假。我不想返回键或值本身,只是断言它确实包含一个真值。 例如 var fruits = { apples: false, orang
我正在尝试编写一个 JUnit 测试,它检查接收到的 JSON 的值。我使用 jsonPath 访问 JSON 中的这些值。我想检查一个值是否为true。对于简单的 jsonPaths,它对我有用,但
我正在尝试检查 Angular HTML 中的 bool 值真实性,但得到了一个奇怪的结果。看完this SO post我以为我明白发生了什么。我希望能够使用 === 运算符,但正如我下面的最后一个示
在 REST Web 服务中,POST JSON 正文如下所示: { "printRequest" : { "printName" : "XYZ", "enab
我是一名优秀的程序员,十分优秀!