| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5547 人关注过本帖
标题:请各位帮我看看我的代码哪里错了
只看楼主 加入收藏
丶随风飘扬
Rank: 2
等 级:论坛游民
帖 子:38
专家分:20
注 册:2019-11-1
结帖率:66.67%
收藏
已结贴  问题点数:1 回复次数:24 
请各位帮我看看我的代码哪里错了
问题:
形状求周长--类继承机制应用
问题描述:

    1、定义父类:形状(Shape),其中有1个方法成员:对形状的周长进行计算;

    2、分别定义子类:圆形(Circle)、正方形(Square)、矩形(Rectangle)、三角形(Triangle);

    3、每个子类重写父类中计算周长的方法,实现对每种形状的周长进行计算;

    4、类中的属性成员均修饰为private,方法成员均修饰为public;

    5、用@Override注解标出重写的方法。

输入要求:        

    第1行输入1个正整数T(1<=T<=100),表示有T组测试数据。

    每组测试数据输入占1行,首先为1个正整数M(1<=M<=4), 若

    1、若M=1,后面输入的为圆形的半径;

    2、若M=2,后面输入的为正方形的边长;

    3、若M=3,后面输入的为矩形的长和宽;

    4、若M=4,后面输入的为三角形的三条边长(确保输入合法)。

    以上各数均为正整数,且定义:兀(pai)=3。



输出要求:

    对于每组测试数据,输出占1行,为1个整数,即形状的边长。

样例输入:

4

1 2

2 2

3 2 3

4 2 3 4

样例输出:
12

8

10

9
这是我的代码:
程序代码:
import java.util.*;

public class JXNU {
    final int π=3;
    class shape{
        public    void count() {    
}
    }
    public class Circle extends shape{
        private  double r;
        public Circle(double r)
        {
            this.r=r;
        }
         @Override
         public void count() {
                System.out.printf("%d",2*π*r);
         }
         }
    public class Square extends shape{
        private double a;
        public Square(double a)
        {
            this.a=a;
        }
         @Override
         public void count() {
                System.out.printf("%d",4*a);
         }
    }
    public class Rectangle extends shape{
        private double a,b;
        public Rectangle(double a,double b)
        {
            this.a=a;
            this.b=b;
        }
         @Override
         public void count() {
                System.out.printf("%d",2*(a+b));
         }
    }
    public class Triangle extends shape{
        private double a,b,c;
        public Triangle(double a,double b,double c)
        {
            this.a=a;
            this.b=b;
            this.c=c;
        }        
         @Override
         public void count() {
                System.out.printf("%d",a+b+c);
         }
    }    

    public void main(String[] args) {
        // TODO Auto-generated method stub
        int T, M;
        double a,b,c,r;
        Scanner sc=new Scanner(System.in);
        T=sc.nextInt();
        while(T-->0){
            M=sc.nextInt();
            if (M==1){
                r=sc.nextDouble();
                Circle c1=new Circle(r);
                c1.count();                
            }
            else if (M==2){
                a=sc.nextDouble();
                Square c1=new Square(a);
                c1.count();
                
            }
            else if (M==3){
                a=sc.nextDouble();
                b=sc.nextDouble();
                Rectangle c1=new Rectangle(a,b);
                c1.count();
            }
            else if (M==4){            
                a=sc.nextDouble();
                b=sc.nextDouble();
                c=sc.nextDouble();
                if(a + b > c && b + c > a && a + c > b)
                {
                    Triangle c1=new Triangle(a,b,c);
                    c1.count();
                }
                else break;
                    
            }

    }

}
}
搜索更多相关主题的帖子: 输入 public count this double 
2020-03-16 07:49
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:1 
一行数字空格分开用nextLine()取了再分割转型

剑栈风樯各苦辛,别时冰雪到时春
2020-03-16 07:53
丶随风飘扬
Rank: 2
等 级:论坛游民
帖 子:38
专家分:20
注 册:2019-11-1
收藏
得分:0 
我先开始输入1,然后输入1 2,应该得到半径为2的圆的周长,但我第二次输入要输入3个数才能得到结果,而且结果也只是把第二个数和第三个数相乘。
2020-03-16 07:58
丶随风飘扬
Rank: 2
等 级:论坛游民
帖 子:38
专家分:20
注 册:2019-11-1
收藏
得分:0 
回复 2楼 林月儿
不懂怎么修改。。。
2020-03-16 08:12
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
T=sc.nextInt();
改成T=Integer.valueOf(sc.nextLine());

while里面的nextInt(),nextDouble()
都改成nextLine(),按split(" ")分割成字符串数组
再根据数组第一个元素判断后面有几个元素,分别需要转换成什么类型

剑栈风樯各苦辛,别时冰雪到时春
2020-03-16 08:37
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
字符串分割转换你应该理解,至于都改成字符串读取,整形和字符串交替读取会出问题。这个可以百度一下

剑栈风樯各苦辛,别时冰雪到时春
2020-03-16 08:39
丶随风飘扬
Rank: 2
等 级:论坛游民
帖 子:38
专家分:20
注 册:2019-11-1
收藏
得分:0 
大佬,你说的的东西我还真不怎么理解。。。我基础有点弱。。。你能帮我改一下吗?
2020-03-16 09:44
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
public void main(String[] args) {
        // TODO Auto-generated method stub
        int T, M;
        double a,b,c,r;
        Scanner sc=new Scanner(System.in);
        T=sc.nextInt();
        while(T-->0){
            M=sc.nextInt();
            if (M==1){
                r=sc.nextDouble();
                Circle c1=new Circle(r);
                c1.count();               
            }
....

改成


public void main(String[] args) {
        int T, M;
        double a,b,c,r;
        Scanner sc=new Scanner(System.in);
        T=Integer.valueOf(sc.nextInt());
        while(T-->0){
            String[] arr = sc.nextLine().split(" ");//空格分割并转型
            M=Integer.valueOf(arr[0]);
            if (M==1){
                r=Double.parseDouble(arr[1]);
                Circle c1=new Circle(r);
                c1.count();               
            }

....
没啥大问题,下面按这么改试试

剑栈风樯各苦辛,别时冰雪到时春
2020-03-16 10:23
丶随风飘扬
Rank: 2
等 级:论坛游民
帖 子:38
专家分:20
注 册:2019-11-1
收藏
得分:0 
程序代码:
import java.util.*;

public class JXNU {
    final int π=3;
    class shape{
        public    void count() {    
}
    }
    public class Circle extends shape{
        private  double r;
        public Circle(double r)
        {
            this.r=r;
        }
         @Override
         public void count() {
                System.out.printf("%d",2*π*r);
         }
         }
    public class Square extends shape{
        private double a;
        public Square(double a)
        {
            this.a=a;
        }
         @Override
         public void count() {
                System.out.printf("%d",4*a);
         }
    }
    public class Rectangle extends shape{
        private double a,b;
        public Rectangle(double a,double b)
        {
            this.a=a;
            this.b=b;
        }
         @Override
         public void count() {
                System.out.printf("%d",2*(a+b));
         }
    }
    public class Triangle extends shape{
        private double a,b,c;
        public Triangle(double a,double b,double c)
        {
            this.a=a;
            this.b=b;
            this.c=c;
        }        
         @Override
         public void count() {
                System.out.printf("%d",a+b+c);
         }
    }    

    public void main(String[] args) {
        // TODO Auto-generated method stub
        int T, M;
        double a,b,c,r;
        Scanner sc=new Scanner(System.in);
        T=Integer.valueOf(sc.nextInt());
        while(T-->0){
            String[] arr = sc.nextLine().split(" ");//空格分割并转型
            M=Integer.valueOf(arr[0]);
            if (M==1){
                r=Double.parseDouble(arr[1]);
                Circle c1=new Circle(r);
                c1.count();    
            }
            else if (M==2){
                a=Double.parseDouble(arr[1]);
                Square c1=new Square(a);
                c1.count();
                
            }
            else if (M==3){
                a=Double.parseDouble(arr[1]);
                b=Double.parseDouble(arr[2]);
                Rectangle c1=new Rectangle(a,b);
                c1.count();
            }
            else if (M==4){            
                a=Double.parseDouble(arr[1]);
                b=Double.parseDouble(arr[2]);
                c=Double.parseDouble(arr[3]);
                if(a + b > c && b + c > a && a + c > b)
                {
                    Triangle c1=new Triangle(a,b,c);
                    c1.count();
                }
                else break;
            }
    }
}
}

这样改还是不行唉。
2020-03-16 10:57
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
搞错了,我写错了,不是Integer.valueOf(sc.nextInt())是sc.nextLine()

5楼提过

剑栈风樯各苦辛,别时冰雪到时春
2020-03-16 11:01
快速回复:请各位帮我看看我的代码哪里错了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048668 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved