问答详情
源自:10-3 Java 中的抽象类

请教各位大神,最后输出为何是零?

https://img1.mukewang.com/5be2911a000120e736361024.jpg

https://img1.mukewang.com/5be2911f0001bb1418520764.jpg

https://img1.mukewang.com/5be2912300016f1918440800.jpg

https://img4.mukewang.com/5be2912700019f5718780788.jpg

https://img2.mukewang.com/5be2912b000134b711240408.jpg

如图。请教一下各位,为何最后输入信息之后,输出的值始终为零呢?

提问者:抒情却输情 2018-11-07 15:17

个回答

  • 简宏伟
    2018-11-07 16:21:54
    已采纳

    public abstract class Shape {
        public double C;
        public double S;
        public abstract void Perimeter();
        public abstract void Area();
    }
    public class Circle extends Shape{
        double R;
        final double PI = 3.14;
        Circle(double RR){
            this.R = RR;
        }
        public void Perimeter(){
            C = 2 * PI * R;
            System.out.println("圆形的周长为" + C);
        }
        public void Area(){
            S = PI * R * R;
            System.out.println("圆形的面积为" + S);
        }
    }
    public class Rectangle extends Shape{
        double l;
        double d;
        Rectangle(double ll, double dd){
            this.l = ll;
            this.d = dd;
        }
        public void Perimeter(){
            C = 2 * (l + d);
            System.out.println("矩形的周长为" + C);
        }
        public void Area(){
            S = l * d;
            System.out.println("矩形的面积为" + S);
        }
    }
    import java.util.Scanner;
    
    public class Test {
        public static void main(String[] args){
            Scanner input = new Scanner(System.in);
            System.out.println("请输入矩形的长和宽");
            double l = input.nextDouble();
            double d = input.nextDouble();
            Shape sp1 = new Rectangle(l, d);
            sp1.Perimeter();
            sp1.Area();
            System.out.println("请输入圆形的半径");
            double r = input.nextDouble();
            Shape sp2 = new Circle(r);
            sp2.Perimeter();
            sp2.Area();
        }
    }

    请输入矩形的长和宽

    2

    2

    矩形的周长为8.0

    矩形的面积为4.0

    请输入圆形的半径

    2

    圆形的周长为12.56

    圆形的面积为12.56


  • 慕村0334298
    2018-11-24 00:32:19

    你那个intial类里面的r是本类中的变量,因为没有作为参数传给方法,所以不参与方法的计算的。子类中的长和宽半径都没赋值,系统赋值0。

  • 简宏伟
    2018-11-09 09:20:50

    就是因为你原来的代码里面没有地方没有给赋值

  • 简宏伟
    2018-11-08 18:12:19

    应该是里面的变量没有给赋新值,用的就是默认的值0,这样无论输入什么数值,输出都是0