zzzz76 发表于 2017-5-5 22:23:47

关于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

cnkizy 发表于 2017-5-5 23:49:12

这个问题很奇怪,我测试了一下,也是同样的错误,
        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:}

零度非安全 发表于 2017-5-6 00:28:34



1 处:100 * a + 10 * a + a 是一个正常的三位数,而后边就变了性质了,变成数字的拼接,因为你加了

一个字符串,所以 Java 把它当作字符串来处理了,而不是数字。

2 处:每条输出是字符串,但若把“+”移到前面,效果就明显了 ^_^!!!

zzzz76 发表于 2017-5-6 10:13:29

零度非安全 发表于 2017-5-6 00:28
1 处:100 * a + 10 * a + a 是一个正常的三位数,而后边就变了性质了,变成数字的拼接,因为 ...

帮大忙了,感谢!

zzzz76 发表于 2017-5-6 10:15:47

cnkizy 发表于 2017-5-5 23:49
这个问题很奇怪,我测试了一下,也是同样的错误,

不妨这样修改,我也坐等大神来回答。

楼下给出了解答,可以来看看{:10_279:}

cnkizy 发表于 2017-5-6 12:27:50

zzzz76 发表于 2017-5-6 10:15
楼下给出了解答,可以来看看

哦我明白了,差点被自己蠢哭了,可以用String.valueOf()转换。
页: [1]
查看完整版本: 关于System.out.println的问题