日期:2014-05-20  浏览次数:20641 次

java问题,能编译却不能运行,小白求详解
package test;
public class ThisTest{
 private int i=0;
   ThisTest(int i){
 this.i=i+1;
 System.out.println("Int constructor i——this.i:  "+i+"——"+this.i);
 System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1));
 
 }
   ThisTest(String s){
 System.out.println("String constructor:  "+s);
 }
 
 ThisTest(int i,String s){
 this(s);
 //this(i);

 this.i=i++;
 System.out.println("Int constructor:  "+i+"/n"+"String constructor:  "+s);
 }
 public ThisTest increment(){
 this.i++;
 return this;
 }
 public static void main(String[] args){
 ThisTest tt0=new ThisTest(10);
 ThisTest tt1=new ThisTest("ok");
 ThisTest tt2=new ThisTest(20,"ok again!");

 System.out.println(tt0.increment().increment().increment().i);
 }
}
java

------解决方案--------------------
可以运行哦,我试过了,输出结果:
Int constructor i——this.i:  10——11
i-1:9this.i+1:12
String constructor:  ok
String constructor:  ok again!
Int constructor:  21/nString constructor:  ok again!
14
------解决方案--------------------
最后加上System.in.readline();吧。让它停一下。可能是一下子就结束了。
------解决方案--------------------
我在想你这些构造函数为什么都是默认的保护类型的,这样如果main函数不在这个类中怎么new 一个这个类的对象出来呢
------解决方案--------------------
System.out.println(tt0.increment().increment().increment().i); 
可能你没看仔细这句是将tt0的变量i自增三次后输出,
------解决方案--------------------
你在仔细看看你的题吧!