注册 登录
编程论坛 JAVA论坛

很简单的一个输出问题

不落夕阳 发布于 2016-11-21 20:29, 2397 次点击
public class A1{
    public static void main(String args[]){
        String output="";
        int i;
        for(i=1;i<=10;i++){
            if(i==5){
                continue;
            }
            output+=i+" ";
        }
        output+="\nUsing continue to skip printing 5";
        output+="\ni="+i;
        System.out.println(output);
    }
}
输出如下:
1 2 3 4 6 7 8 9 10
Using continue to skip printing 5
i=11
问题:system.out.println(output)应该只输出i=11,为什么还会输出“1234678910”和“Using continue to skip printing 5”。求解谢谢
4 回复
#2
JavaJack2016-11-21 21:53
你定义的output是String型
字符串的内容一旦声明将不会更改!只会改变栈内存对堆内存的引用
output+=i+" ";相当于第一次循环是1,第二次循环是1 2 ,第三次1 2 3...以此类推
output+="\nUsing continue to skip printing 5";相当于再在你for循环里面产生的output数据基础上又加上了这段字符串
public class A1{
     public static void main(String args[]){
         String output="";
         int i;
         for(i=1;i<=10;i++){
             if(i==5){
                 continue;
             }
             output+=i+" ";
         }
         System.out.println(output);                //输出此时的output
         System.out.println("---------------------------------");[/color]
         output+="\nUsing continue to skip printing 5";
    System.out.println(output);                //输出此时的output
    System.out.println("---------------------------------");
         output+="\ni="+i;                            //输出再次修改后的output
         System.out.println(output);
     }
 }

在上面几个位置加上这样的输出代码,可以很清楚的看出不同时刻output的内容为
1 2 3 4 6 7 8 9 10
---------------------------------
1 2 3 4 6 7 8 9 10
Using continue to skip printing 5
---------------------------------
1 2 3 4 6 7 8 9 10
Using continue to skip printing 5
i=11

希望对楼主有帮助!我也是名新手!很抱歉没能看出楼主程序所要达到的目的,不能更进一步交流
#3
learnJava2016-11-22 12:25
楼主不明白最后的输出结果怎么来的?建议使用调试工具,可以看到程序每一步执行的结果。如果不想调试,可以借鉴2楼的方式 在每个变量可能存在改变的地方打印出来(这种方式在写小程序的时候要常用,跟项目的时候项目会有要求打日志。),也能看到程序执行的流程。如果程序复杂点,经常用打印,你查起错误来会很快。
#4
qwe8851677592016-11-26 23:08
这个java中对+这个符号进行了重载,它的意思是字符串的连接,就是两个字符串连接成一个
#5
GrayJerry2016-11-28 16:55
output += "1"; 是指:output = output + "1";
1