精华内容
下载资源
问答
  • java面向对象试题

    2011-06-17 23:15:22
    java面向对象试题 java面向对象试题 java面向对象试题 java面向对象试题
  • Java面向对象试题

    万次阅读 多人点赞 2019-03-19 15:58:05
    1、 请创建一个Animal动物类,要求有方法eat()方法,方法输出一条语句“吃东西”。...在Test类中向上转型创建b对象,调用eat方法。然后向下转型调用eat()方 法、fly()方法。 评分标准: 正确写出Ani...

    1、 请创建一个Animal动物类,要求有方法eat()方法,方法输出一条语句“吃东西”。 创建一个接口A,接口里有一个抽象方法fly()。创建一个Bird类继承Animal类并实现 接口A里的方法输出一条有语句“鸟儿飞翔”,重写eat()方法输出一条语句“鸟儿 吃虫”。在Test类中向上转型创建b对象,调用eat方法。然后向下转型调用eat()方 法、fly()方法。

    评分标准:
    正确写出Animal类10分
    正确定义接口A 10分
    Bird类继承Animal类实现接口A 10分
    向上转型创建对象b调用eat()方法正确输出 10分
    向下转型调用eat()方法、fly()方法正确输出 10分。
    

    答案:
    Animal.java
    image.png
    A.java
    image.png
    Bird.java
    image.png
    Bird.java
    image.png

    2、 编写一个Person抽象类,要求含有姓名(name)年龄(age)两个私有属性以及吃饭(eat) 和睡觉(sleep)两个抽象方法,并写出带参构造方法,创建学生(student)和工人(worker) 两个类,继承Person类,学生类多出了私有属性学号和学习方法(输出我爱学习),工 人类多出了私有属性工号和工作方法(输出我爱工作),在主函数中创建学生和工人类 的实例对象,使用构造方法赋值,并输出所有属性和方法(共50分,能够定义类5分, 正确书写子父类构造方法1分,set get写对10分,方法重写10分,正确创建对象10 分,能运行5分)

    	显示结果如下:
    		姓名:李四,年龄:18,学号:1024
    		食堂吃饭
    		我爱学习
    		姓名:张三,年龄:20,工号:1025
    		自己做饭
    		在家躺着睡觉
    		我爱工作
    

    Person.java
    image.png
    Student.java
    image.png
    image.png
    Worker.java
    image.png
    Mains.java
    image.png

    3、 案例题目描述:

    利用继承,来描述,人,老师,学生之间的关系
    1)老师含有属性:name,age,subject,含有方法:eat,teach,toString
    2)学生含有属性:name,age,class,含有方法:eat,study,toString
    3)利用继承的思想,从老师和学生中抽象出人,并创建Test进行调用并输出(System.out)
    2、判分标准
    1)创建类Person,含有公有属性:name姓名,age年龄。含有方法void eat(String something);方法中打印输出“我爱吃XXX”。含有构造方法,带两个参数,分别是name和age,并利用this关键字传值到成员变量中 。(10分)
    2)创建类Student,含有属性:class班级,含有方法,void study(String subject);方法打印输出:我热爱学习subject。创建包含三个参数的构造方法,分别是name,age,class,利用super实现父类构造方法传值。重写toString方法,打印输出:我的名字是XX,我的年龄是XX,我的班级是XX(10分)
    3)创建类Teacher,含有属性:subject,含有方法,void teach();方法打印输出:我教授的是subject。创建包含三个参数的构造方法,分别是name,age,subject,利用super实现父类构造方法传值。重写toString方法,打印输出:我的名字是XX,我的年龄是XX(10分)
    4)创建Test测试类,创建Student对象,并调用带3个参数的构造方法,自己赋值,然后依次调用study方法,eat方法,toString方法(20分)
    5)创建Teacher对象,并调用带3个参数的构造方法,自己赋值,然后依次调用teach方法,eat方法,toString方法(10分)
    Person.java
    image.png
    image.png
    Student.java

    image.png
    Teacher.java

    image.png
    Test.java
    image.png
    4、需求:首先定义一个抽象类Animal,抽象类中定义一个抽象方法play()抽象方法,创建 一个猫Cat类,继承Animal并重写play方法输出“我是猫,我玩老鼠”,创建一个狗类, 继承Animal并重写play方法输出“我是狗,我玩球”。最后编写测试类TestDemo,通 过多态创建猫,通过多态创建狗,并调用猫对象的play方,狗对象的play方法
    效果如图:
    我是猫,我玩老鼠
    我是狗,我玩球
    评分标准
    1)创建Animal抽象类,并定义抽象方法play.(10)
    2)创建Dog类继承Animal类,重写play方法。(10)
    3)创建Cat类继承Animal类,重写play方法。(10)
    4)编写测试类,通过多态创建猫对象,狗对象(15)
    Animal.java
    image.png
    Cat.java
    image.png
    Dog.java
    image.png
    Test.java
    image.png

    5、 请创建一个Car抽象类,要求有brand(品牌)属性,并且要求封装私有化,写出属性的 set、get方法。抽象类Car构造方法中也可以对brand属性赋值,写出一个抽象方法run ()。创建一个跑车类SportsCar继承抽象类Car。实现Car抽象方法输出一条语句“超 级跑车”,在本类中写出一个自己的方法price(),输出一条语句“售价100w”。在测 试类Test类中创建跑车对象car1,用构造器赋值品牌属性,输出属性,调用run()、 price()方法。创建跑车car2,用set方法赋值属性,输出属性,调用run()、price ()方法。

    评分标准:
    1)正确写出抽象类Car ,封装属性,写出抽象方法10分
    2)封装属性,写出set、get、抽象方法 10分
    3)正确继承Car类写出SportsCar类和并实现run() 方法。10分
    4)创建car1、car2对象并调用方法10分
    5)成功正确输出 10分
    显示结果如下:
    	法拉利
    	超级跑车
    	售价100w
    	兰博基尼
    	超级跑车
    	售价100w
    

    Car.java
    image.png
    SportsCar.java
    image.png
    Test.java
    image.png

    6、 完成那个USB接口的例子,分别定义USB接口,两个方法start,stop。两个子类:Flash和Print,重写两个方法,方法中随便输出两句话。定义计算机类Computer,有一个plugin方法,有一个USB类型的参数,用来调用start和stop。在主方法中实例化Computer类,调用plugin方法,分别传递Flash和Print的对象,通过向上转型,完成功能。

    注意:因为从键盘输入我们还没有做,所以上面若提到使用键盘输入,改为在程序中随意定义几个值(如果会键盘输入那就使用键盘输入)
    USB.java
    image.png
    Print.java
    image.png
    Flash.java
    image.png
    Computer.java
    image.png
    Mains.java
    image.png

    7、 完成以下要求的代码:(共30分)

    (1)请创建一个Car抽象类,要求有brand(品牌)属性,并且要求封装私有化,写出属性的 set、get方法。抽象类Car构造方法中对brand属性赋值,写出一个抽象方法run()。(2)创建一个跑车类SportsCar继承抽象类Car。实现Car抽象方法输出一条语句“超级跑车”,在本类中写出一个自己的方法price(),输出一条语句“售价100w”。(10分)
    (3)定义测试类Test类,并创建跑车对象car1,用构造器赋值品牌属性,使用setter方法输出属性值,再调用run()、 price()方法。 (10分)
    (4)创建跑车car2,向上转型到Car,使用setter方法为brand赋值属性,输出属性值,调用run()方法。(10分)
    Car.java

    package kaoshi_1;
    
    public abstract class Car {
    	private String brand;
    
    	public String getBrand() {
    		return brand;
    	}
    
    	public void setBrand(String brand) {
    		this.brand = brand;
    	}
    	
    	public Car(String brand) {
    		this.brand=brand;
    	}
    	
    	public Car() {
    		
    	}
    	public abstract void run();
    }
    
    

    SportCar.java

    package kaoshi_1;
    
    public class SportCar extends Car {
    
    	public void run() {
    		System.out.println("超级跑车");
    	}
    	public SportCar(String brand) {
    		super(brand);
    	}
    	public void price() {
    		System.out.println("售价100w");
    	}
    	public SportCar() {
    		
    	}
    }
    
    

    Test.java

    package kaoshi_1;
    
    public class Test {
    	public static void main(String[] args) {
    		SportCar car1 = new SportCar("奥迪A6");
    		System.out.println(car1.getBrand());
    		car1.run();
    		car1.price();
    		
    		Car car2 = new SportCar();
    		car2.setBrand("玛莎拉蒂");
    		System.out.println(car2.getBrand());
    		car2.run();
    	}
    }
    
    

    image.png

    8、 完成以下要求的代码:(共40分)

    (1)定义一个Flower花作为父类
    属性:颜色 价格
    属性要进行封装(即为每条私有属性写set,get方法)
    定义无参构造方法,和传两个参数的有参构造方法一个。
    方法:显示详细信息的方法showInfo (15分)
    (2)定义一个Rose玫瑰花类继承Flower类
    玫瑰花自己的属性:产地(要求对产地属性进行封装 私有化属性)
    重写父类中的显示详细信息的方法showInfo,在重写的showInfo方法中通过super调用父类的showInfo方法;并显示产地信息。
    再定义一个方法warn警告显示:不要摘玫瑰花,小心扎手! (15分)
    (3)定义测试类Test完成:(10分)
    ①实例化Flower类,调用构造方法赋值,并调用方法,输出:
    花的颜色是白色,价格是10元
    ②实例化玫瑰花类,调用方法,输出:
    花的颜色是紫色,价格是30元
    产地是大理
    不要摘玫瑰花,小心扎手!
    Flower.java

    package kaoshi_1;
    
    public class Flower {
    	private String color;
    	private String price;
    	public String getColor() {
    		return color;
    	}
    	public void setColor(String color) {
    		this.color = color;
    	}
    	public String getPrice() {
    		return price;
    	}
    	public void setPrice(String price) {
    		this.price = price;
    	}
    	public Flower() {
    		
    	}
    	public Flower(String color,String price) {
    		this.color=color;
    		this.price=price;
    	}
    	public void showInfo() {
    		System.out.println("花的颜色是"+this.color+",价格是"+this.price+"元");
    	}
    }
    
    

    Rose.java

    package kaoshi_1;
    
    public class Rose extends Flower {
    	private String address;
    	
    	public String getAddress() {
    		return address;
    	}
    	public void setAddress(String address) {
    		this.address = address;
    	}
    	public void showInfo() {
    		super.showInfo();
    		System.out.println("产地是"+this.address);
    	}
    	public void warn() {
    		System.out.println("不要摘玫瑰花,小心扎手!");
    	}
    	public Rose() {
    		
    	}
    	public Rose(String color,String price,String address) {
    		super(color,price);
    		this.address=address;
    	}
    }
    
    

    Test2.java

    package kaoshi_1;
    
    public class Test2 {
    	public static void main(String[] args) {
    		Flower f=new Flower("白色","10");
    		f.showInfo();
    		
    		Rose r=new Rose("紫色","30","大理");
    		r.showInfo();
    		r.warn();
    	}
    }
    
    

    image.png

    9、 完成以下要求的代码:

    (1)首先定义一个程序员的接口Programmer,接口中定义一个抽象方法ACode(); (10分)
    (2)创建一个Student类,实现接口Programmer并实现ACode()方法,ACode()方法可输出输出“程序员在敲代码”, Student类有年龄,姓名,班级,性别私有属性(封装),各个属性的set,get方法,写空参构造方法,和一个有参构造方法包含这四个属性。 (10分)
    (3)定义测试类,在main方法中创建一个Student对象,将自己的年龄,姓名,班级,性别,赋值给这个对象,并在控制台打印出对象的各个属性。调用所有的方法。(10分)
    效果如图:
    程序员在敲代码
    姓名:孙悟空 性别:女 年龄:19 班级:三年级二班
    Programmer.java

    package kaoshi_1;
    
    public interface Programmer {
    	public abstract void ACode();
    }
    
    

    Student.java

    package kaoshi_1;
    
    public class Student implements Programmer {
    	private int age;
    	private String name;
    	private String clas;
    	private String sex;
    	public void ACode() {
    		System.out.println("程序员在敲代码");
    	}
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getClas() {
    		return clas;
    	}
    	public void setClas(String clas) {
    		this.clas = clas;
    	}
    	public String getSex() {
    		return sex;
    	}
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
    	public Student() {
    		
    	}
    	public Student(int age,String name,String clas,String sex) {
    		this.age=age;
    		this.name=name;
    		this.clas=clas;
    		this.sex=sex;
    	}
    }
    
    

    Test3.java

    package kaoshi_1;
    
    public class Test3 {
    
    	public static void main(String[] args) {
    		Student s=new Student(19,"孙悟空","三年级二班","女");
    		s.ACode();
    		System.out.println("姓名:"+s.getName()+",性别"+s.getSex()+",年龄:"+s.getAge()+",班级:"+s.getClas());
    	}
    }
    

    image.png

    展开全文
  • Java面向对象试题.pdf

    2021-08-28 20:17:42
    Java面向对象试题
  • Java面向对象练习题

    千次阅读 多人点赞 2019-08-29 11:10:22
    学了面向对象,我们来做几道基础 // 1、定义一个点类Point,包含2个成员变量x、y分别表示x和y坐标,2个 // 构造器Point()和Point(int x0,y0),以及一个movePoint // (int dx,int dy)方法实现点的位置移动,创建两...

    学了面向对象,我们来做几道基础题

    面向对象基础

    1、定义一个点类Point,包含2个成员变量x、y分别表示x和y坐标,2个构造器Point()和Point(int x0,y0),以及一个movePoint(int dx,int dy)方法实现点的位置移动,创建两个Point对象p1、p2,分别调用movePoint方法后,打印p1和p2的坐标。

    代码演示

    public class Point {
    	
    	//成员变量
    	private double x;
    	private double y;
    	
    	//每一个类都带有一个默认的无参构造函数
    	public Point() {
    		super(); //表示父类的构造函数
    		
    		/*
    		 * 	1.构造函数与类名完全一致
    		 * 	2.不能带有返回值类型
    		 * 	3.不需要return语句
    		 * 
    		 * 	作用:创建对象
    		 */
    	}
    	public Point(int x0,int y0) {
    		this.x=x0;
    		this.y=y0;
    	}
    	
    	public void movePoint(int dx,int dy) {
    		this.x+=dx;
    		this.y+=dy;
    	}
    	
    	public static void main(String[] args) {
    		Point p1 = new Point (2,4);
    		p1.movePoint(2, 4);
    		System.out.println("p1坐标为:"+p1.x+","+p1.y);
    		
    		Point p2 = new Point (5,8);
    		p2.movePoint(50, 120);
    		System.out.println("p2坐标为:"+p2.x+","+p2.y);
    	}
    

    2、定义一个矩形类Rectangle:
    2.1 定义三个方法:getArea()求面积、getPer()求周长,showAll()分别在控制台输出长、宽、面积、周长。
    2.2 有2个属性:长length、宽width
    2.3 通过构造方法Rectangle(int width, int length),分别给两个属性赋值
    2.4 创建一个Rectangle对象,并输出相关信息

    代码演示

    public class Rectangle {
    	
    	int length;
    	int width;
    	
    	
    	/*
    	 * 	static
    	 * 	1.修饰变量:直接通过类名来访问
    	 * 	2.修饰方法:也可以通过类名来访问
    	 * 	3.修饰代码块:加载类的时候优先执行,并只执行一次
    	 * 
    	 * 	非静态方法可以访问静态方法和变量
    	 * 	静态方法不可以访问非静态方法和变量
    	 */
    	
    	public int getArea() {
    		int area=length*width;
    		return area;
    	}
    	
    	public int getPer() {
    		return (length+width)*2;
    	}
    	
    	public void showAll() {
    		int l=this.length;
    		int w=this.width;
    		int a=length*width;
    		int p=(length+width)*2;
    		System.out.println("长:"+l+","+"宽:"+w+","+"面积:"+a+","+"周长:"+p);
    	}
    	
    	public Rectangle (int length,int width) {
    		this.length=length;
    		this.width=width;
    	}
    	
    	public static void main(String[] args) {
    		Rectangle r=new Rectangle(5,5);
    		r.showAll();
    	}
    

    设计一个类Student,该类包括姓名、学号和成绩。设计一个方法,按照成绩从高到低的顺序输出姓名、学号和成绩信息。

    代码演示

    public class Student {
    
    	String name;
    	int empno;
    	int grade;
    	
    	public Student(String name,int empno,int grade) {
    		this.name=name;
    		this.empno=empno;
    		this.grade=grade;
    	}
    	
    	public static void sort(Student[] s) {
    		for(int i=1;i<s.length;i++) {
    			for(int j=0;j<s.length-i;j++) {
    				if(s[j].grade < s[j+1].grade) {
    					Student t;
    					t=s[j];
    					s[j]=s[j+1];
    					s[j+1]=t;
    				}
    			}
    		}
    	}
    	
    	public static void main(String[] args) {
    		
    		Student s1=new Student("小明", 1, 80);
    		Student s2=new Student("小红", 2, 90);
    		Student s3=new Student("小王", 3, 99);
    		
    		Student[] arr = {s1,s2,s3};
    		
    		sort(arr);
    		
    		for(Student is:arr) {
    			System.out.println(is.name+"\t"+is.empno+"\t"+is.grade);
    		}
    		
    	}
    

    在这里插入图片描述

    面向对象高级特性

    1、创建一个球员类,并且该类最多只允许创建十一个对象。提示利
    用static 和封装性来完成。

    类的说明:
    在这里插入图片描述
    代码演示:

    
    public class Players {
    	private static int sum;
    	
    	public Players() {
    		super();
    		System.out.println("创建了一个对象!");
    	}
    
    	public static Players create() {
    		Players players=null;
    		if(sum>=11) {
    			System.out.println("创建的对象以超过11个!");
    		}else {
    			players=new Players();
    			sum++;
    		}
    		return players;
    	}
    	
    	public static void main(String[] args) {
    		Players[] players=new Players[11];
    		for(int i=0;;i++) {
    			Players p=Players.create();
    			if(p==null) {
    				break;
    			}else {
    				players[i]=p;
    			}
    		}
    		
    	}
    }
    
    

    结果:
    在这里插入图片描述

    2、设计2个类,要求如下:
    2.1 定义一个汽车类Vehicle,
    2.1.1 属性包括:汽车品牌brand(String类型)、颜色color(String类型)和速度speed(double类型)。
    2.1.2 至少提供一个有参的构造方法(要求品牌和颜色可以初始化为任意值,但速度的初始值必须为0)。
    2.1.3 为属性提供访问器方法。注意:汽车品牌一旦初始化之后不能修改。
    2.1.4 定义一个一般方法run(),用打印语句描述汽车奔跑的功能
    2.1.5 在main方法中创建一个品牌为“benz”、颜色为“black”的汽车。
    2.2 定义一个Vehicle类的子类轿车类Car,要求如下:
    2.2.1 轿车有自己的属性载人数loader(int 类型)。
    2.2.2 提供该类初始化属性的构造方法。
    2.2.3 重新定义run(),用打印语句描述轿车奔跑的功能。
    2.2.4 在main方法中创建一个品牌为“Honda”、颜色为“red”,载人数为2人的轿车。

    代码演示:

    //Vehicle 类
    public class Vehicle {
    	private String brand;
    	private String color;
    	private double speed;
    	
    	
    	
    	public String getBrand() {
    		return brand;
    	}
    //	public void setBrand(String brand) {
    //		this.brand = brand;
    //	}
    	public String getColor() {
    		return color;
    	}
    	public void setColor(String color) {
    		this.color = color;
    	}
    	public double getSpeed() {
    		return speed;
    	}
    	public void setSpeed(double speed) {
    		this.speed = speed;
    	}
    	public Vehicle() {
    		super();
    		// TODO Auto-generated constructor stub
    	}
    	public Vehicle(String brand, String color) {
    		super();
    		this.brand = brand;
    		this.color = color;
    		this.speed = 0;
    	}
    	public void run() {
    		System.out.println("汽车奔跑");
    	
    	}
    	public static void main(String[] args) {
    		Vehicle v = new Vehicle("benz", "black");
    		System.out.println("品牌:"+v.brand+"\n颜色:"+v.color+"\n速度:"+v.speed);
    		v.run();
    	}
    }
    
    
    
    //Car 类
    public class Car extends Vehicle{
    	int loader;
    
    	public Car(String brand,String color,int loader) {
    		super(brand,color);
    		this.loader=loader;
    	}
    	
    	public void run() {
    		System.out.println("品牌:"+getBrand()+"\r颜色:"+getColor()+"\r载人数:"+loader);
    		System.out.println("轿车奔跑");
    	}
    	
    	public static void main(String[] args) {
    		Car c=new Car("Honda","red",2);
    		c.run();
    	}
    }
    

    结果:
    在这里插入图片描述
    在这里插入图片描述

    更多内容,等待后续更新!

    展开全文
  • JAVA面向对象练习题

    2019-08-20 16:59:38
    3 测试类中,在main方法中,声明创建每个子类的对象,并调用2个子类的showAll方法。 代码如下: package zuoye3; public abstract class Shape { protected double area; protected double per; protected ...

    设计四个类,分别如下:
    1 设计Shape表示图形类,有面积属性area、周长属性per,颜色属性color,有两个构造方法(一个是默认的、一个是为颜色赋值的),还有3个抽象方法,分别是:getArea计算面积、getPer计算周长、showAll输出所有信息,还有一个求颜色的方法getColor。
    2 设计 2个子类:
    2.1 Rectangle表示矩形类,增加两个属性,Width表示长度、height表示宽度,重写getPer、getArea和showAll三个方法,另外又增加一个构造方法(一个是默认的、一个是为高度、宽度、颜色赋值的)。
    2.2 Circle表示圆类,增加1个属性,radius表示半径,重写getPer、getArea和showAll三个方法,另外又增加两个构造方法(为半径、颜色赋值的)。
    3 测试类中,在main方法中,声明创建每个子类的对象,并调用2个子类的showAll方法。

    代码如下:

    package zuoye3;
    
    public abstract class Shape {
    	protected double area;
    	protected double per;
    	protected String color;
    	public Shape() {
    		
    	}
    	public Shape(String color) {
    		this.color=color;
    	}
    	
    	public abstract void s();
    	
    	public abstract void c();
    	
    	public abstract void showAll();
    	
    }
    
    package zuoye3;
    
    public class Rectangle extends Shape{
    	double width;
    	double height;
        public Rectangle() {}
    	
        public Rectangle(double width,double height,String color) {
        	super();
        	this.color=color;
        	this.height=height;
        	this.width=width;
        }
    
    	@Override
    	public void s() {
    		
    		area = width * height;
    	}
    
    	@Override
    	public void c() {
    		
    		per = (width + height) * 2;
    	}
    
    	@Override
    	public void showAll() {
    		
    		System.out.println("矩形面积为:" + area + ",周长为:" + per+",颜色:"+color);
    	}
    
    }
    
    package zuoye3;
    
    public class Circle extends Shape {
    	double radius;
    
    	public Circle() {}
    
    	public Circle(double radius,String color) {
    		this.color=color;
    		this.radius=radius;
    	}
    	@Override
    	public void s() {
    		
    		area=radius*radius*3.14;
    	}
    
    	@Override
    	public void c() {
    		
    		per = 2 * radius * 3.14;
    	}
    
    	@Override
    	public void showAll() {
    		System.out.println("圆的面积为:" + area + ",周长为:" + per+",颜色:"+color);
    		
    	}
    
    }
    
    package zuoye3;
    
    public class test {
    
    	public static void main(String[] args) {
    		Circle circle = new Circle(2,"black");
    		Rectangle rectangle = new Rectangle(3,5,"red");
    		circle.s();
    		circle.c();
    		circle.showAll();
    		
    		rectangle.s();
    		rectangle.c();
    		rectangle.showAll();
    	}
    
    }
    
    
    展开全文
  • JAVA 面向对象练习题

    千次阅读 2018-05-13 12:20:34
    分数(10分) 题目内容: 设计一个表示分数的类Fraction。这个类用两个int类型的变量分别表示分子和分母。... 将自己的分数和r的分数相加,产生一个新的Fraction的对象。注意小学四年级学过两个分数如何相加的哈。

            最近在学习JAVA,学校里学的东西早忘了,是照着慕课网上的课程学的,碰到一条面向对象的简单编程题。以下是题目:

    设计一个表示分数的类Fraction。这个类用两个int类型的变量分别表示分子和分母,构造一个a/b的分数

    这个类的构造函数是:

    Fraction(int a, int b)


    这个类要提供以下的功能:

    double toDouble();                 

        将分数转换为double

    Fraction plus(Fraction r);

        将自己的分数和r的分数相加,产生一个新的Fraction的对象。

    Fraction multiply(Fraction r);

        将自己的分数和r的分数相乘,产生一个新的Fraction的对象。

    void print();

        将自己以“分子/分母”的形式输出到标准输出,并带有回车换行。如果分数是1/1,应该输出1。当分子大于分母时,不需要提出整数部分,即31/30是一个正确的输出。


    注意,在创建和做完运算后应该化简分数为最简形式。如2/4应该被化简为1/2。

    你写的类要和以下的代码放在一起,并请勿修改这个代码


    import java.util.Scanner;
    public class Main {
    	public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    		Fraction b = new Fraction(in.nextInt(),in.nextInt());
    Fraction a = new Fraction(in.nextInt(), in.nextInt());a.print();b.print();
    		b.print();
    a.plus(b).print();a.multiply(b).plus(new Fraction(5,6)).print();a.print();in.close();}
    }

    注意,你的类的定义应该这样开始:

    class Fraction {

    也就是说,在你的类的class前面不要有public。


    输入格式:

    程序运行时会得到四个数字,分别构成两个分数,依次是分子和分母。


    输出格式:

    输出一些算式。这些输入和输出都是由Main类的代码完成的,你的代码不要做输入和输出。


    输入样例:

    2 4 1 3


    输出样例:

    1/2

    1/3

    5/6

    1

    1/2

    1/3


    一开始想了很久没头绪,后来看了一位同学的代码,是用最大公约数来做的很受启发,以下是这位同学的代码:


    class Fraction{
        int a;
        int b;
         Fraction(int a ,int b) {
            int gcd = GCD(a,b);
            this.a = a/gcd;
            this.b = b/gcd;
        }
         //分数转小数,在这题中有用到????
         double toDouble(int a ,int b) {
             double ret = a*1.0/b ;
             return ret;
         }
          
         //分数“x”,返回一个新的Fraction
        Fraction  multiply(Fraction r){
            int a1 = a*r.a ;
            int b1 = b*r.b ;
            int gcd = GCD(a1,b1);
            a1 /= gcd ;
            b1 /= gcd ;
         Fraction x = new Fraction(a1,b1);
         return x ;
         }
        //分数“+” ,返回一个新的Fraction 
        Fraction plus(Fraction r) {
            int b1 = LCM(b,r.b);
            int a1 = a*(b1/b) + r.a*(b1/r.b);
            int gcd = GCD(a1,b1);
            b1 /= gcd ;
            a1 /= gcd ;
            Fraction x = new Fraction(a1,b1);
            return x ;
             
        }
        //print Method !!
        void print() {
            if(a==0) {
                System.out.println(0);
            }
            else if(a==b) {
                System.out.println(1);
            }
            else System.out.println(a+"/"+b);
        }
        //Method最大公因数
        int GCD(int x,int y) {
            int ret = 1;
            while(x%y != 0) {
                int t= x%y;
                x = y ;
                y = t ;
            }
            ret = y ;
            return ret ;
        }
        //Method最小公倍数
        int LCM(int x,int y) {
            int gcd = GCD(x,y);
            return x*y/gcd;
        }
         
    }

    不过最大公倍数我觉的没必要,而且他的代码有些冗余,以下是我的代码:


    import java.util.Scanner;
    
    public class Main {
    	
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		Fraction a = new Fraction(in.nextInt(),in.nextInt());
    		Fraction b = new Fraction(in.nextInt(),in.nextInt());
    		a.print();
    		b.print();
    		a.plus(b).print();
    		a.multiply(b).plus(new Fraction(5,6)).print();
    		a.print();
    		b.print();
    		in.close();
    	}
    }
    
    class Fraction  {
    	private int a;
    	private int b;
    	
    	Fraction(int a,int b){
    		int max=simplify(a,b);
    		this.a = a/max;
    		this.b = b/max;	
    	}
    	
    	double toDouble(int a,int b){
    		double r =(double)a/(double)b;
    		return r;
    	}
    	
    	Fraction plus(Fraction r){	
    		int a1 = a*r.b+b*r.a;
    		int b1 = b*r.b;
    	    Fraction p =new Fraction(a1,b1);
    	    return p ;
    	}
    	
    	Fraction multiply(Fraction r){
    		int a2 = a*r.a;
    		int b2 = b*r.b;
    		Fraction m =new Fraction(a2,b2);
    		return m;
    	}
    	
    //	求最大公约数
    	int simplify(int a,int b){
    		int max = 0 ;
    		if(a%b == 0){
    			max=b;
    		}else{
    			for (int i=1;i<=a;i++){
    				if(a%i==0 && b%i==0){
    					max = i;	
    				}	
    			}
    		}
    		return max;
    	}
    
        void print() {
            if(a==0) {
                System.out.println(0);
            }
            else if(a==b) {
                System.out.println(1);
            }
            else System.out.println(a+"/"+b);
        }
    	
    }
    展开全文
  • Java 面向对象 练习题与答案

    热门讨论 2010-12-23 19:52:21
    Java 面向对象 练习题与答案
  • java面向对象练习题

    2020-04-13 18:43:25
    } } //Test类 public class Test { public static void main(String[] args) { //使用new关键字实例化对象 Person p = new Person(); //传入name、age、grade的参数值 p.name = "花花"; p.age = 12; ...
  • java面向对象试题.pdf

    2021-09-30 17:43:12
    java面向对象试题.pdf
  • java面向对象试题.doc

    2021-09-29 19:25:38
    java面向对象试题.doc
  • Java面向对象试题集.pdf
  • Java面向对象试题集[归纳].pdf
  • Java面向对象试题分析[借鉴].pdf
  • Java面向对象试题-IT公司
  • 绝对经典

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,208
精华内容 6,483
关键字:

java面向对象练习题

java 订阅