wil*_*lem 6 java boolean chars
你好,我是java世界的新手,我陷入了我的代码,这将是一个非常好的litle hel p
即时通讯在此代码中遇到问题/
public class Variables {
boolean bit;
String name;
public Variables(int b, String name){
this.name = name;
bit = test(b);
}
public boolean test(int b) {
System.out.println(b);
if(b==49) {
return true;
}
if(b==48) {
return false;
}
else {
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是无论b的数量是多少,它都会保持真实的实际上是我试图得到一个数字1或0的女巫在一个字符和变换中的布尔t/f
提前致谢
更多代码
public class truthtable2 {
public ArrayList <Variables[]>bits = new ArrayList<>();
public truthtable2 (ArrayList <String> inputs){
String [] inputsTab = inputs.toArray(new String[inputs.size()]);
Variables[] bittab = new Variables[inputsTab.length];
int total = (int) (Math.pow(2,inputs.size()))-1;
String tab[]=new String[total+1];
for(int i =0;i<=total;i++){
tab[i]=(String.format("%16s", Integer.toBinaryString(i)).replace(' ', '0'));
}
for(int i = 0;i<tab.length;i++){
char[] chars = tab[i].toCharArray();
for(int x = 0;x<inputs.size();x++){
int d = 15-x;
bittab[x]= new Variables(chars[d], inputsTab[x]);
}
bits.add(bittab);
}
for(Variables[] d: bits){
for(int f = 0;f<d.length;f++){
System.out.format("%4s %4s \n",d[f].bit,d[f].name);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
'0' -->A false
'0' -->B false
'0' -->Cin false
'1' -->A true
'0' -->B false
'0' -->Cin false
'0' -->A false
'1' -->B true
'0' -->Cin false
'1' -->A true
'1' -->B true
'0' -->Cin false
'0' -->A false
'0' -->B false
'1' -->Cin true
'1' -->A true
'0' -->B false
'1' -->Cin true
'0' -->A false
'1' -->B true
'1' -->Cin true
'1' -->A true
'1' -->B true
'1' -->Cin true
Run Code Online (Sandbox Code Playgroud)
编辑2
在执行
for(Variables[] d: bits){
for(int f = 0;f<d.length;f++){
System.out.format("%4s %4s \n",d[f].bit,d[f].name);
Run Code Online (Sandbox Code Playgroud)
我有这个结果
true A
true B
true Cin
true A
true B
true Cin
true A
true B
true Cin
true A
true B
true Cin
true A
true B
true Cin
true A
true B
true Cin
true A
true B
true Cin
true A
true B
true Cin
Run Code Online (Sandbox Code Playgroud)
您至少有两个主要问题和 1 个小问题。
Variables[]数组bittab,因此每次它都会被覆盖。您需要生成一个新的。test函数太复杂了。我在下面的代码中修复了它。这是固定代码:
public class truthtable2 {
public ArrayList<Variables[]> bits = new ArrayList<>();
public truthtable2(ArrayList <String> inputs){
String [] inputsTab = inputs.toArray(new String[inputs.size()]);
int total = (int) (Math.pow(2,inputs.size()))-1;
String tab[]=new String[total+1];
for(int i =0;i<=total;i++){
// changed the below line
tab[i]=(String.format("%"+inputs.size()+"s", Integer.toBinaryString(i)).replace(' ', '0'));
System.out.println(tab[i]);
}
for(int i = 0;i<tab.length;i++){
char[] chars = tab[i].toCharArray();
Variables[] bittab = new Variables[inputsTab.length]; // Moved this here
for(int x = 0;x<inputs.size();x++){
// Changed this to use variable size
int d = inputs.size()-x-1;
bittab[x]= new Variables(chars[d], inputsTab[x]);
}
bits.add(bittab);
}
for(Variables[] d: bits){
for(int f = 0;f<d.length;f++){
System.out.format("%4s %4s \n",d[f].bit,d[f].name);
}
}
}
public class Variables {
boolean bit;
String name;
public Variables(int b, String name){
this.name = name;
bit = test(b);
}
// Totally rewrote function
public boolean test(int b) {
System.out.println(b);
return b==49;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1595 次 |
| 最近记录: |