刷题的狂欢-----JAVA每日三练-----第十七天
Posted 敲代码的xiaolang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷题的狂欢-----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
以上是关于刷题的狂欢-----JAVA每日三练-----第十七天的主要内容,如果未能解决你的问题,请参考以下文章