JAVA第三週實驗

1.實現分數的加法運算,編程思想和代碼在附件。(必做題)

2.實現二維數組的一種加法運算,編程思想和代碼在附件。(必做題)

3.實現分數的四則運算,即兩個分數相減,相乘和相除,考慮到各種邊界情況。(選做題)

 

分數的加法運算編程 編程思路:分數相加,兩個分數分別是1/5和7/20,它們相加後得11/20。方法是先求出兩個分數分母的最小公倍數,通分後,再求兩個分子的和,最後約簡結果分數的分子和分母(如果兩個分數相加的結果是4/8,則必須將其化簡成最簡分數的形式1/2),即用分子分母的最大公約數分別除分子和分母。請用四個對話框順序輸入分子和分母,在控制檯上輸出其運算結果。代碼結構附後。 package hu;

public class TestFractory {

 /**   * @param args   */  public static void main(String[] args) {   // TODO Auto-generated method stub   fracAdd(1,5,7,20);//結果爲:11/20   //fracSub(1,5,7,20);//分數相減   //fracMul(1,5,7,20);//分數相乘   //fractDiv(1,5,7,20);//分數相除

 }  static void fracAdd(int first_numerator,int first_denominator,int second_numrator,int second_denominator){   //以下代碼能夠在控制檯上顯示結果   //需要調用求最大公約數的函數   //需要調用求最小公倍數的函數  }  static int gcd(int m,int n){   return 0;     }  static int lcm(int m,int n){   return 0;  }

}

 

二維數組的一種加法運算 編程思路:求出二維數組(行數和列數必須相等)的非對角線元素之和,即求兩條對角線之外的元素之和。代碼框架如下。 package hu;

public class TestMatrix {

 /**   * @param args   */  public static void main(String[] args) {   // TODO Auto-generated method stub   int[][] a={{1,1,1,1},{1,2,2,1},{1,2,2,1},{1,1,1,1}};//初始化數組如4*4   printMatrix(a);//按二維方式輸出數組   int sum=addMatrix(a);   System.out.println(sum);

 }  static void printMatrix(int[][] a){     }  static int addMatrix(int[][] a){   return 0;  }

}

 

 

 
 
 
 
 
 
package hu;

public class TestMatrix {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[][] a={{1,1,1,1},{1,2,2,1},{1,2,2,1},{1,1,1,1}};//初始化數組如4*4
		printMatrix(a);//按二維方式輸出數組
		int sum=addMatrix(a);
		System.out.println(sum);

	}
	
	static void printMatrix(int[][] a){
		for(int i = 0;i < 4;i++)
		{
			for(int j = 0;j < 4;j++)
			{
				System.out.print(a[i][j]);
			}
			System.out.println();
		}
	}

	
	static int addMatrix(int[][] a){
		int sum = 0;
		for(int i=0;i<4;i++)
		{
			for(int j=0;j<4;j++)
			{
				if(3-i!=j&&i!=j)
				{
				sum=sum+a[i][j];
				}
			}
		}
		
		return sum;
	}

}


 

 

 

 

 

package hu;

public class TestFractory {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		fracAdd(1,5,7,20);//結果爲:11/20
		fracSub(1,5,7,20);//分數相減
		fracMul(1,5,7,20);//分數相乘
		fractDiv(1,5,7,20);//分數相除

	}
	static void fracAdd(int first_numerator,int first_denominator,int second_numrator,int second_denominator){
		//以下代碼能夠在控制檯上顯示結果
		
		int m1=lcm( first_denominator,second_denominator);//需要調用求最小公倍數的函數
		int nu=first_numerator*(m1/first_denominator)+second_numrator*(m1/second_denominator);
		int de=m1;
		int m=gcd(nu,de);//需要調用求最大公約數的函數

		nu=nu/m;
		de=de/m;
		
		System.out.print(nu);
		System.out .print("/");
		System.out.print(de);
	
	}

	
	//求最大公約數
	static int gcd(int m,int n){
		int i;
		if(m>n)
		{
		  i=n;
		}
		else
		{
			i=m;
		}
		
		int t,t1=1;
		for(t=i;t>0;t--)
		{
			if(m%t==0&&n%t==0)
			{			
				t1=t;
				 break;			
			}
		}
	
		return t1 ;
		
	}
	//求最小公倍數
	static int lcm(int m,int n){
		int i;
		if(m>n)
		{
		  i=m;
		}
		else
		{
			i=n;
		}
		
		int t,t1=1;
		
		for(t=i;t>0;t++)
		{
			if(t%n==0&&t%m==0)
			{			
				t1=t;
				break;			
			}
		}
	return t1;
	}

}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章