【发布时间】:2013-05-11 18:03:14
【问题描述】:
我正在尝试在 Java 中执行 CNF 运算符,但遇到相等错误。
首先,我做了大部分软件,但我没有完全做。
我的代码在这里:
import acm.program.*;
public class split extends ConsoleProgram{
public void run()
{
String veri = "(p or q or s or t or k) and (p or q)";
String yeni = tekrarsil(parcala(veri));
int []sayilar = new int[yeni.length()];
for (int i = 0; i < yeni.length(); i++) {
sayilar[i] = readInt("give a number for "+yeni.charAt(i)+" :");
}
for (int i = 0; i < sayilar.length; i++) {
println(sayilar[i]);
}
}
public String parcala(String veri)
{
String yenistr = "";
String yeni[] = veri.split("and");
for (int j = 0; j < yeni.length; j++) {
String yveri[] = yeni[j].split("or");
for (int i = 0; i < yveri.length; i++) {
yveri[i] = yveri[i].trim();
if(i==0){
yenistr = yenistr.concat(yveri[i].substring(1));
}else if(i==yveri.length-1){
yenistr = yenistr.concat(yveri[i].substring(0,yveri[i].length()-1));
}else{
yenistr = yenistr.concat(yveri[i]);
}
}
}
return (yenistr);
}
public String tekrarsil(String S)
{
for (int i = 0; i < S.length(); i++)
for (int k = i+1; k <= S.length()-1; k++){
if (S.charAt(i) == S.charAt(k))
{
S = S.substring(0,k)+ S.substring(k+1,S.length());
k--;
}
}
return S;
}
}
问题在于平等。
程序应检查变量是true 或false。
例如:
(p or q or s or t or k) and (q or p)
这个程序确实像下面这样:
给 p 一个数字:1(用户将给一个数字一(true)或零(false))
给 q 一个数字:0
给 s 一个数字:1
给 t 一个数字:0
给 k 一个数字:0
(如果变量使用多个,程序会询问一次)
如果我们查看这些变量,我们可以看到 (1 or 0 or 1 or 0 or 0) 和 (1 or 0) 它会返回 true,但我不能这样做。我不明白该怎么做。
最好的祝愿。
【问题讨论】:
-
您的源代码应始终使用 100% 英文编写。这样做的原因一个是专业标准,另一个是让别人理解,还有更多……
-
如果有问题,我可以更改代码。我觉得没关系。
-
但是,我很高兴你的 cmets,我正在等待你的帮助
-
没关系,除非你想在这里得到答案。有多少程序员说英语而不是你的语言?您是向自己的国民还是向全世界提出问题?哪个更可能产生正确答案?这取决于你。
-
实际上世界上有很多地方的代码不是用英文编写的。人们一直使用他们的母语。它可能会减少理解它的人数,因此如果您想要获得最大的反馈但又不需要对这个人提出质疑,那么这不是最好的主意。
标签: java acm-java-libraries conjunctive-normal-form