刷题的狂欢-----JAVA每日三练-----第十七天

努力刷题,每日三题。

第一题
在这里插入图片描述
这道题其实看起来不是很难,但是笔者遇到了一个小的问题,就是对于小数的处理,在这道题里面,你的结果如果是小数,如果是100.0,那么你就要把结果变成100,如果是100.28,那么你照常输出,如果是12.22555666…你需要保留两位小数,如果是一位小数,比如10.2,那么也是照常输出,对于结果这里的处理,笔者一直没有想出来解法,最后参考了评论区的解答,使用到了一种判断方法,叫做java.text.DecimalFormat,将数字进行格式化的输出。

import java.text.DecimalFormat;
import java.util.*;

class shape{
        private int x;
        private int y;

        public shape(int x, int y) {
            this.x = x;
            this.y = y;
        }
    }

class Rectangle extends shape{
        private int a;
        private int b;

        public Rectangle(int a, int b) {
            super(a, b);
            this.a = a;
            this.b = b;
        }
        public int GetArea(){
           int area = a*b;
           return area;
        }
    }
class Circle extends shape{
        int r;
        public Circle( int r) {
            super(r, r);
            this.r = r;
        }
        public double GetArea(){
            double area_1 = 3.14*r*r;
            return area_1;
        }
    }
class Square extends Rectangle{
        int d;
        public  Square(int d){
            super(d,d);
            this.d = d;
        }
        public int GetArea(int d){
            int area_2 = d*d;
            return area_2;
        }
    }

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        int r = scanner.nextInt();
        int d = scanner.nextInt();
        Rectangle rectangle = new Rectangle(a,b);
        System.out.println(rectangle.GetArea());
        Circle circle=new Circle(r);
        Square square = new Square(d);
        //在这里开始,对圆形的面积进行单独考虑
        double AreaCircle = circle.GetArea(); //小数情况
        int AreaCircle1 = (int)circle.GetArea(); //强制转换为整数
        DecimalFormat df = new DecimalFormat("###.0"); //###.0这种用法暂时没有找到
        double temp;
        if (AreaCircle > AreaCircle1){//比较原来的小数和强转后的大小
            temp = Double.parseDouble(df.format(AreaCircle));
            if (temp != AreaCircle) {//处理位数大于两位的情况
                System.out.println(String.format("%.2f", AreaCircle));
            }else {
                System.out.println(AreaCircle);
            }
        }
        else {
            System.out.println(AreaCircle1);
        }
        
        System.out.println(square.GetArea());

    }
}

参考资料
https://www.cnblogs.com/Small-sunshine/p/11648652.html
https://blog.csdn.net/weixin_42605050/article/details/102793465
https://blog.csdn.net/xieyunc/article/details/102531684

第二题
定义一个接口,里面有实现求两个数最大公约数的方法,再定义一个异常类,来检测输入的数字是否符合标准,使用接口回调的方法,从键盘键入数字。

import java.util.Scanner;

interface Work{
    void Test(int x, int y)throws MyException;
}

class  MyException extends Exception{
    String message;
    MyException(int n){
        message = n+"不是正数";
    }

    @Override
    public String getMessage() {
        return message;
    }
}

class A implements Work{
    @Override
    public void Test(int x, int y) throws MyException {
        if(x<=0 && y>0){
            MyException ex = new MyException(x);
            throw(ex);
        }else if(x>0 && y<=0){
            MyException ex = new MyException(y);
            throw(ex);
        }else{
            int c;
            c = x%y;
            while(c!=0){
                x = y;
                y = c;
                c = x%y;
            }
            System.out.println(y);
        }
    }
}

public class Demo_03 {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int x = scanner.nextInt();
        int y = scanner.nextInt();
        Work work;
        work = new A();
        try {
            work.Test(x,y);
        }catch (MyException e){
            System.out.println(e.getMessage());
        }
    }
}

第三题
实现 “歌手” 和 “乐器” 的和声,用泛型类创建一个基于“歌手”和“乐器”的对象。

class Chorus<E,F>{
    void makeChorus(E person, F yueqi){
        person.toString();
        yueqi.toString();
    }
}

class 歌手{
    public String toString(){
        System.out.println("你好。");
        return " ";
    }
}

class 乐器{
    public String toString(){
        System.out.println("makabaka");
        return " ";
    }
}
public class Main{
    public static void main(String[] args) {
        Chorus<歌手,乐器> model=new Chorus<歌手, 乐器>();
        歌手 XueZhiQian = new 歌手();
        乐器 piano = new 乐器();
        model.makeChorus(XueZhiQian,piano);
    }
}

😉😉😉有问题评论区留言,欢迎大家浏览下面的博文,并参与博主设置的投票当中。😊😊😊

https://blog.csdn.net/weixin_52605156/article/details/120689189?spm=1001.2014.3001.5501

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲代码的xiaolang

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值