首页 > 编程语言 >Java:分数运算(类与对象)

Java:分数运算(类与对象)

时间:2023-04-02 13:32:34浏览次数:42  
标签:分数 Java 运算 int nextInt Fraction print new


题目内容:

设计一个表示分数的类Fraction。这个类用两个int类型的变量分别表示分子和分母。

这个类的构造函数是:

Fraction(int a, int b)

    构造一个a/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 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 {

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

输入格式:

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

输出格式:

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

输入样例:

2 4 1 3

输出样例:

1/2

1/3

5/6

1

1/2

1/3

时间限制:500ms内存限制:32000kb

误点

一定要注意不要在函数里面改变传进来的值。

实现代码

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{
	int a,b;
	Fraction(int a,int b)
	{
		this.a = a;
		this.b = b;
	}
	
	double toDouble()
	{
		return (double)a/b;
	}
	
	Fraction plus(Fraction r)
	{
		Fraction s = new Fraction(r.a, r.b);
		int h = s.b * a;
		s.a *= b;
		s.b *= b;
		s.a += h;
		return s;
	}
	
	Fraction multiply(Fraction r)
	{
		r.a *= a;
		r.b *= b;
		return r;
	}
	
	void print()
	{
		int h;
		if(a >= b) h = gcd(a,b);
		else h = gcd(b,a);
		a /= h;
		b /= h;
		if(a%b == 0)
			System.out.println(a/b);
		else
			System.out.println(a+"/"+b);	
	}
	
	int gcd(int m,int n)
	{
		if(m%n==0) return n;
		return gcd(n,m%n);
	}
}

标签:分数,Java,运算,int,nextInt,Fraction,print,new
From: https://blog.51cto.com/wonderking/6164714

相关文章

  • java面向对象编程-对象的创建分析
    对象的创建分析类与对象的关系类是一种抽象的数据类型,他是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物动物,植物,手机,电脑Person类,Pet类等,这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为对象是抽象概念的具体事例张三就是人的一个具......
  • JavaIO流:主要知识点
    JavaIO流:主要知识点File类介绍:java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关。File能新建、删除、重命名文件和目录,但File不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。想要在Java程序中表示一个真实存在的文件或目录,那么必......
  • java面向对象编程
    面向对象编程java的核心思想就是OOP面向过程&面向对象面向过程:步骤清晰简单,第一步做什么,第二步做什么···适合处理较为简单的问题面向对象:物理类聚,分类的思维模式,思考问题首先解决问题需要哪些分类,然后对这些分类进行单独思考,最后对某个分类下的细节进行面向过......
  • kafka(java客户端)生产者消费者不能连接虚拟机kafka
    报错如下:...:localhost:9092...java.net.ConnectException:Connectionrefused:nofurtherinformationatsun.nio.ch.SocketChannelImpl.checkConnect(NativeMethod)atsun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)atorg.apac......
  • java面向对象编程-方法回顾
    方法回顾和加深方法的定义修饰符返回类型方法名:注意规范,见名知意参数列表:参数类型参数名异常抛出:后面讲解  方法的调用静态方法非静态方法形参和实参值传递和引用传递this关键字    ......
  • Java的运行时数据区域
    本文从概念上介绍Java虚拟机内存的各个区域,讲解这些区域的作用、服务对象以及其中可能产生的问题。Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有些区域随着虚拟机进程的启动而一直存在,有......
  • java题目集1~3的总结性Blog
    一、前言经历前三次java题目集的话,应该也算是相对了解了java这门语言了,因为有了c语言的基础在里面,所以一部分基础的语法部分就理解来说的话不算是很困难,但从面向过程到面向对象的一个思想观念的改变让我有些不适应。如果把编写代码比作下棋的话,那么面向过程就是一步一步的下......
  • Java创建线程的三种方式
    创建线程的三种方式1.继承Thread类,重写run方法publicclassMyThreadextendsThread{publicvoidrun(){System.out.println("HellofromMyThread!");}}publicclassMain{publicstaticvoidmain(String[]args){MyThreadthread......
  • java 中required_通过实例学习Spring @Required注释原理
    @Required注释应用于bean属性的setter方法,它表明受影响的bean属性在配置时必须放在XML配置文件中,否则容器就会抛出一个BeanInitializationException异常。下面显示的是一个使用@Required注释的示例。示例:让我们使EclipseIDE处于工作状态,请按照下列步骤创建一个......
  • java 中required_通过实例学习Spring @Required注释原理
    @Required注释应用于bean属性的setter方法,它表明受影响的bean属性在配置时必须放在XML配置文件中,否则容器就会抛出一个BeanInitializationException异常。下面显示的是一个使用@Required注释的示例。示例:让我们使EclipseIDE处于工作状态,请按照下列步骤创建一个......