上机题
1. 分数运算(加法和除法)
【问题描述】
编写一个分数类Fraction。此类包含两个整数型属性:分子和分母。定义该类的构造方法及属性的get和set方法。定义该类的化简方法,如4/8化简为1/2。定义该类的toString方法,输出化简后的结果(如果是整数,只输出整数)。
编写两种,共4个方法分别完成Fraction的加法和除法运算:
第一种为实例方法,参数为一个Fraction对象,功能是当前对象和参数进行运算,加法方法可以按照下面来定义
public void add(Fraction a){
//当前分数对象(即this)加上a,结果存储在this中
}
第二种为类方法,参数为两个Fraction对象,功能是对这两个Fraction对象进行运算,并返回运算结果,加法方法的定义如下
public static Fraction add(Fraction a,Fraction b){
//返回a和b的相加的结果
}
编写测试类Test,测试并验证这四个方法的分数运算的正确性。要求输入两个分数的分母和分子,用这四个数字创建两个分数对象a和b,调用类方法做a和b的加法运算,得到分数对象c,将c作为结果输出,调用类方法做a和b的除法运算,得到分数对象d,将d作为结果输出,调用实例方法的做c和a的加法运算,结果存储在c中,将c作为结果输出,调用实例方法的做d和c的除法运算,结果存储在d中,将d作为结果输出。
【输入形式】a的分子和分母,b的分子和分母
【输出形式】
a+b的结果c
a/b的结果d
c+a的结果c
d/c的结果d
【样例输入】-2 3 3 5
【样例输出】
-1/15
-10/9
-11/15
50/33
【样例说明】
【评分标准】结果正确的满分
代码如下:
import java.util.Scanner;
public class Homework_1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Fraction a = new Fraction();
Fraction b = new Fraction();
Fraction c = new Fraction();
Fraction d = new Fraction();
a.setNumerator(sc.nextInt());
a.setDenominator(sc.nextInt());
b.setNumerator(sc.nextInt());
b.setDenominator(sc.nextInt());
c.add(a);
c.add(b);
d.add(a);
d.division(b);
System.out.println(c.toString());
System.out.println(d.toString());
System.out.println( Fraction.add(c,a).toString());
System.out.println( Fraction.division(d,c).toString());
}
}
class Fraction{
private int numerator = 0;
private int denominator = 0;
public int getDenominator() {
return denominator;
}
public void setDenominator(int denominator) {
this.denominator = denominator;
}
public int getNumerator() {
return numerator;
}
public void setNumerator(int numerator) {
this.numerator = numerator;
}
public void Simplify() {
for(int i = Math.abs(this.numerator);i>=1;--i){
if((this.numerator%i==0)&&(this.denominator%i==0)){
this.numerator /=i;
this.denominator /=i;
}
}
}
public String toString() {
if(this.numerator%this.denominator==0){
return String.valueOf(this.numerator/this.denominator);
}
this.Simplify();
if(this.denominator<0){
this.denominator = Math.abs(this.denominator);
this.numerator = -this.numerator;
}
return String.valueOf(this.numerator)+"/"+String.valueOf(this.denominator) ;
}
public void add(Fraction a){
if(this.numerator==0 && this.denominator == 0){
this.numerator = a.numerator;
this.denominator = a.denominator;
}else {
this.numerator = this.numerator * a.denominator + a.numerator * this.denominator;
this.denominator = this.denominator * a.denominator;
this.Simplify();
}
}
public static Fraction add (Fraction a,Fraction b){
if(a.numerator==0 && a.denominator == 0){
a.numerator = b.numerator;
a.denominator = b.denominator;
}else {
a.numerator = a.numerator * b.denominator + b.numerator * a.denominator;
a.denominator = a.denominator * b.denominator;
a.Simplify();
}
return a;
}
public void division(Fraction a){
this.numerator *= a.denominator;
this.denominator *= a.numerator;
this.Simplify();
}
public static Fraction division (Fraction a,Fraction b){
a.numerator*=b.denominator;
a.denominator*=b.numerator;
a.Simplify();
return a;
}
}
2. 分数运算(减法和乘法)
【问题描述】
编写一个分数类Fraction。此类包含两个整数型属性:分子和分母。定义该类的构造方法及属性的get和set方法。定义该类的化简方法,如4/8化简为1/2。定义该类的toString方法,输出化简后的结果(如果是整数,只输出整数)。
编写两种,共4个方法分别完成Fraction的减法和乘法运算:
第一种为实例方法,参数为一个Fraction对象,功能是当前对象和参数进行运算,减法方法可以按照下面来定义
public void substract(Fraction a){
//当前分数对象(即this)减去a,结果存储在this中
}
第二种为类方法,参数为两个Fraction对象,功能是对这两个Fraction对象进行运算,并返回运算结果,减法方法的定义如下
public static Fraction substract(Fraction a,Fraction b){
//返回a和b的相减的结果
}
编写测试类Test,测试并验证这四个方法的分数运算的正确性。要求输入两个分数的分母和分子,用这四个数字创建两个分数对象a和b,调用类方法做a和b的减法运算,得到分数对象c,将c作为结果输出,调用类方法做a和b的乘法运算,得到分数对象d,将d作为结果输出,调用实例方法的做c和d的减法运算,结果存储在c中,将c作为结果输出,调用实例方法的做d和c的乘法运算,结果存储在d中,将d作为结果输出。
【输入形式】a的分子和分母,b的分子和分母
【输出形式】
a-b的结果c
a*b的结果d
c-d的结果c
d*c的结果d
【样例输入】1 2 2 3
【样例输出】
-1/6
1/3
-1/2
-1/6
【样例说明】
【评分标准】结果正确的满分
代码如下:
import java.util.Scanner;
public class Homework_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Fraction a = new Fraction();
Fraction b = new Fraction();
Fraction c = new Fraction();
Fraction d = new Fraction();
a.setNumerator(sc.nextInt());
a.setDenominator(sc.nextInt());
b.setNumerator(sc.nextInt());
b.setDenominator(sc.nextInt());
c.subtraction(a);
c.subtraction(b);
d.multiplication(a);
d.multiplication(b);
System.out.println(c.toString());
System.out.println(d.toString());
System.out.println( Fraction.subtraction(c,d).toString());
System.out.println( Fraction.multiplication(d,c).toString());
sc.close();
}
}
class Fraction{
private int numerator = 0;
private int denominator = 0;
public Fraction(){
}
public Fraction(int numerator,int denominator){
this.numerator = numerator;
this.denominator = denominator;
}
public int getDenominator() {
return denominator;
}
public void setDenominator(int denominator) {
this.denominator = denominator;
}
public int getNumerator() {
return numerator;
}
public void setNumerator(int numerator) {
this.numerator = numerator;
}
public void Simplify() {
for(int i = Math.abs(this.numerator);i>=1;--i){
if((this.numerator%i==0)&&(this.denominator%i==0)){
this.numerator /=i;
this.denominator /=i;
}
}
}
public String toString() {
if(this.numerator%this.denominator==0){
return String.valueOf(this.numerator/this.denominator);
}
this.Simplify();
if(this.denominator<0){
this.denominator = Math.abs(this.denominator);
this.numerator = -this.numerator;
}
return String.valueOf(this.numerator)+"/"+String.valueOf(this.denominator) ;
}
public void subtraction(Fraction a){
if(this.numerator==0 && this.denominator == 0){
this.numerator = -a.numerator;
this.denominator = -a.denominator;
}else {
this.numerator = this.numerator * a.denominator - a.numerator * this.denominator;
this.denominator = this.denominator * a.denominator;
//this.Simplify();
}
}
public static Fraction subtraction (Fraction a,Fraction b){
if(a.numerator==0 && a.denominator == 0){
a.numerator = -b.numerator;
a.denominator = -b.denominator;
}else {
a.numerator = a.numerator * b.denominator - b.numerator * a.denominator;
a.denominator = a.denominator * b.denominator;
//a.Simplify();
}
return a;
}
public void multiplication(Fraction a){
if(this.numerator==0&&this.denominator==0) {
this.numerator=a.numerator;
this.denominator=a.denominator;
}
else{
this.numerator *= a.numerator;
this.denominator *= a.denominator;
//this.Simplify();
}
}
public static Fraction multiplication (Fraction a,Fraction b){
int numerator = a.numerator*b.numerator;
int denominator = a.denominator*b.denominator;
//a.Simplify();
return new Fraction(numerator,denominator);
}
}
博主java萌新,有问题可评论区共同交流学习,欢迎大家交流awa