黑马程序员技术交流社区

标题: 编译了一段代码,本来要求循环10次的,但在下列代码下 [打印本页]

作者: 惊鸿游龙    时间: 2016-7-12 20:48
标题: 编译了一段代码,本来要求循环10次的,但在下列代码下
class Demo44 {
        public static void main(String[] args) {
                car s=new car();
                car(s);
                for (int i=0;i<10 ; i++){
                        System.out.println(car (s));
                }
        }

        public static int car(car s){
                s.color="red";
                s.num=8;
                s.run();
                return car(s);
        }
}
class car {
       
                String color;
                int num;
                public void run(){
                System.out.println(color+"..."+num);
        }
}
求各位大神指正这段代码的不适之处在哪儿,本来是想循环10的
作者: 夏萱    时间: 2016-7-12 21:02
调试问题出在 car(s);
作者: 夏萱    时间: 2016-7-12 21:03
不懂为什么要把car作为参数传入,这是在做递归?
作者: yuxing    时间: 2016-7-12 21:08
在car()方法里return car(s),其中car(s)指的是参数为对象引用s的方法,方法返回其本身,自然  无限循环~
作者: yuxing    时间: 2016-7-12 21:13
class Demo {
        public static void main(String[] args) {
                Car s=new Car();
                car(s);
                for (int i=0;i<10 ; i++){
                        System.out.println(car (s));
                }
        }

        public static Car car(Car s){
                s.color="red";
                s.num=8;
                s.run();
                return  s;
        }
}
class Car {
        
                String color;
                int num;
                public void run(){
                System.out.println(color+"..."+num);
        }
}
我帮你改了一下, 这样就对了.记得编码最好记得标识符的大小写~
作者: 夏萱    时间: 2016-7-12 22:03
这样代码比较容易读

public class Demo  {

        public static void main(String[] args) {
                Car car=new Car();
                init(car);                                //初始化赋值
                for (int i=0;i<10 ; i++){
                       car.print();                        //打印10次
                }
        }

        public static void init(Car car){
                car.color="red";
                car.num=8;
        }
}
class Car {
                String color;        //颜色
                int num;                //车号
                public void print(){
                System.out.println(color+"..."+num);
        }
}
作者: 一叶知秋来    时间: 2016-7-12 22:04
那个car方法不对,会出现无限循环的结果,这是递归,你试试吧该方法中的int 类型改成void类型。
作者: 惊鸿游龙    时间: 2016-7-13 10:38
谢谢各位大神指导
作者: 惊鸿游龙    时间: 2016-7-13 10:43
yuxing 发表于 2016-7-12 21:13
class Demo {
        public static void main(String[] args) {
                Car s=new Car();

public static Car car(Car s){
中为什么把Car改成int和void都有问题
作者: 惊鸿游龙    时间: 2016-7-13 10:44
夏萱 发表于 2016-7-12 22:03
这样代码比较容易读

public class Demo  {

这个运行了一下,好像还是有问题
作者: 夏萱    时间: 2016-7-13 11:07
惊鸿游龙 发表于 2016-7-13 10:44
这个运行了一下,好像还是有问题

这是我这里的代码,

你拷贝到自己的工程要写
class Demo44 {

学一下看错误信息,这些错误调试之后就懂了

加油~
作者: yuxing    时间: 2016-7-13 11:20
惊鸿游龙 发表于 2016-7-13 10:43
public static Car car(Car s){
中为什么把Car改成int和void都有问题

因为你返回的是一个对象~
作者: 惊鸿游龙    时间: 2016-7-13 19:51
夏萱 发表于 2016-7-13 11:07
这是我这里的代码,

你拷贝到自己的工程要写

谢谢指导{:3_53:}
作者: 惊鸿游龙    时间: 2016-7-13 19:53
yuxing 发表于 2016-7-13 11:20
因为你返回的是一个对象~

谢谢指导{:3_53:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2