关于System.out.println的问题
今天练习时遇到个小问题,希望各位帮帮忙{:5_108:}我认为问题集中在System.out.println一块
代码如下:
/*
* 使用全部的1~9使等式成立xxx + xxx = xxx
*/
public class DFS{
private int n;
private int[] book;
private int[] a;
public DFS(int n){
this.n = n;
this.book = new int;
this.a = new int;
}
/* 将手上的牌一张不漏的全部放入 */
public void next(int step){
if(step == n + 1){
if(100*a + 10*a + a + 100*a + 10*a + a == 100*a + 10*a + a){
System.out.println(100*a + 10*a + a + " + " + 100*a + 10*a + a + " = " + 100*a + 10*a + a);
/*
System.out.print(100*a + 10*a + a + " + ");
System.out.print(100*a + 10*a + a + " = ");
System.out.println(100*a + 10*a + a);
*/
}
return;
}
for(int i = 1; i <= n; i++){
if(book == 0){
a = i;
book = 1;
next(step + 1);
book = 0;
}
}
return;
}
public static void main(String[] args){
new DFS(9).next(1);
}
}
运行结果如下(错误)
但若采用注释的输出
运行正确如下
实在不知到错在哪里,求帮助55
这个问题很奇怪,我测试了一下,也是同样的错误,
int _subA= 100*a + 10*a + a ;
int _subB= 100*a + 10*a + a ;
int _subC=100*a + 10*a + a ;
System.out.println("["+_subA + "] + [" + _subB + "] = [" + _subC+"]");
不妨这样修改,我也坐等大神来回答。{:10_254:}
1 处:100 * a + 10 * a + a 是一个正常的三位数,而后边就变了性质了,变成数字的拼接,因为你加了
一个字符串,所以 Java 把它当作字符串来处理了,而不是数字。
2 处:每条输出是字符串,但若把“+”移到前面,效果就明显了 ^_^!!!
零度非安全 发表于 2017-5-6 00:28
1 处:100 * a + 10 * a + a 是一个正常的三位数,而后边就变了性质了,变成数字的拼接,因为 ...
帮大忙了,感谢! cnkizy 发表于 2017-5-5 23:49
这个问题很奇怪,我测试了一下,也是同样的错误,
不妨这样修改,我也坐等大神来回答。
楼下给出了解答,可以来看看{:10_279:} zzzz76 发表于 2017-5-6 10:15
楼下给出了解答,可以来看看
哦我明白了,差点被自己蠢哭了,可以用String.valueOf()转换。
页:
[1]