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{
Fraction(int a, int b){
}
int a;
int b;
double toDouble(){
double result;
result = this.a/this.b;
return(result);
}
Fraction plus(Fraction r){
int aa,bb;
aa = r.a + this.a;
bb = r.b + this.b;
Fraction result = new Fraction(aa,bb);
return result;
}
Fraction multiply(Fraction r){
int aa,bb;
aa = r.a * this.a;
bb = r.b * this.b;
Fraction result = new Fraction(aa,bb);
return result;
}
void print(){
int n=this.getGCD(this.a,this.b);
int aa=this.a;
aa=aa/n;
int bb=this.b;
bb=bb/n;
System.out.print(aa,bb);
}
int getGCD(int a,int b){
int min = this.a < this.b ? this.a : this.b;
for (int i = min;i >= 1;i --) {
if (a % i == 0 && b % i == 0) {
return i;
}
else {
return 1;
}
}
}
}
}
謝謝各位大佬了
uj5u.com熱心網友回復:
補一下題目的要求浙大翁愷老師的慕課作業
題目內容:
設計一個表示分數的類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
uj5u.com熱心網友回復:
你確定你運行的代碼跟你上邊貼出來的代碼是一樣的嘛,我運行結果的沒出現靜態中參考非靜態成員的錯誤。至于你最后一個錯誤,System.out.print(aa,bb);沒有這個方法,你應該是想列印出來結果,改寫成字串拼接就行uj5u.com熱心網友回復:
1.我挺確定的就是這個代碼
2.這個bug我剛解決了是這樣
uj5u.com熱心網友回復:
class Fraction {
private final int a;
private final int b;
Fraction(int a, int b){
int maxDivisor = maxDivisor(a, b);
this.a = a / maxDivisor;
this.b = b / maxDivisor;
}
double toDouble() {
return a * 1.0 / b;
}
Fraction plus(Fraction r) {
int a = this.a * r.b + this.b * r.a;
int b = r.b * this.b;
return new Fraction(a, b);
}
Fraction multiply(Fraction r) {
int a = r.a * this.a;
int b = r.b * this.b;
return new Fraction(a, b);
}
void print() {
if (this.a == this.b) {
System.out.println("1");
return;
}
System.out.println(this.a + "/" + this.b);
}
private int maxDivisor(int a, int b) {
int max = Math.max(a, b);
int min = Math.min(a, b);
while (min != 0) {
int temp = max % min;
max = min;
min = temp;
}
return max;
}
}
uj5u.com熱心網友回復:
要學會貼程式
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;
int b;
String s;
Fraction(int a, int b){
this.a=a;
this.b=b;
if(a==b) {
this.s="1";
}else {
int t=getGCD(a, b);
if(t!=0) {
this.s=a/t+"/"+b/t;
}else {
this.s=a+"/"+b;
}
}
}
double toDouble(){
double result;
result = this.a/this.b;
return(result);
}
Fraction plus(Fraction r){
int aa,bb;
aa = r.a*this.b + this.a*r.b;
bb = r.b *this.b;
Fraction result = new Fraction(aa,bb);
return result;
}
Fraction multiply(Fraction r){
int aa,bb;
aa = r.a * this.a;
bb = r.b * this.b;
Fraction result = new Fraction(aa,bb);
return result;
}
void print(){
System.out.println(this.s);
}
int getGCD(int a,int b){
int t;
if(a<b) {
t=a;
}else {
t=b;
}
while(a%t!=0||b%t!=0) {
t--;
}
return t;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/232697.html
標籤:Java SE
上一篇:mybatis select時,對同一張表兩次join查詢不同記錄,但是回傳同一條記錄的問題
下一篇:求助,java實作串口通訊熱插拔
