JAVA語言程序設計(基礎篇) 第十版——第八章 多維數組 (參考答案)

 只寫了幾題(待以後更新.......)

*8.1(求矩陣中各列數字的和)

import java.util.Scanner;

public class E1 {

	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.println("Enter a 3-by-4 matrix row by row: ");
		double[][] m=new double[3][4];
		
		for(int row=0; row<m.length; row++) {
			for(int column=0; column<m[row].length; column++) {
				m[row][column]=input.nextDouble();
			}
		}
		
		input.close();
		
		for(int column=0; column<4; column++) {
			System.out.println("Sum of the elements at column "+column+" is "
						+sumColumn( m, column));  
		}
		
		

	}

	public static double sumColumn(double[][] m, int columnIndex) {  
		double sum=0;
		
		for(int row=0; row<m.length; row++) {
			sum += m[row][columnIndex];
			
		}
		return sum;
		
	}
}

 *8.2(求矩陣主對角線元素的和)

import java.util.Scanner;

public class E2 {

	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.println("Enter a 4-by-4 matrix row by row: ");
		double[][] m=new double[4][4];
		
		for(int row=0; row<m.length; row++) {
			for(int column=0; column<m[row].length; column++) {
				m[row][column]=input.nextDouble();
			}
		}
		
		input.close();
		
		System.out.println("Sum of the elements in the major diagonal is "
				+sumMajorDiagonal(m));  

	}
	
	public static double sumMajorDiagonal(double[][] m) {
		double sum=0;
		
		for(int row=0; row<m.length; row++) {
			sum += m[row][row];
		}
		
		return sum;
		
	}

}

 *8.3(按考分對學生排序)

略,目前不會

**8.4(計算每個僱員每週工作的時間)

略,看見排序的我要緩一緩

8.5(代數方面:兩個矩陣相加)

import java.util.Scanner;

public class E5 {

	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.print("Enter matrix1: ");
		double[][] m1=new double[3][3];
		for(int row=0; row<m1.length; row++) {
			for(int column=0; column<m1[row].length; column++) {
				m1[row][column]=input.nextDouble();
			}
		}
		
		System.out.print("Enter matrix2: ");
		double[][] m2=new double[3][3];
		for(int row=0; row<m2.length; row++) {
			for(int column=0; column<m2[row].length; column++) {
				m2[row][column]=input.nextDouble();
			}
		}
		
		double[][] s=addMatrix(m1,m2);
		
		System.out.println("The matrices are added as follows "); 
		
		
		System.out.println(m1[0][0]+" "+m1[0][1]+" "+m1[0][2]+"       "+m2[0][0]+" "+m2[0][1]+" "+m2[0][2]+"       "+s[0][0]+" "+s[0][1]+" "+s[0][2]);	
		System.out.println(m1[1][0]+" "+m1[1][1]+" "+m1[1][2]+"   +   "+m2[1][0]+" "+m2[1][1]+" "+m2[1][2]+"   =   "+s[1][0]+" "+s[1][1]+" "+s[1][2]);	
		System.out.println(m1[2][0]+" "+m1[2][1]+" "+m1[2][2]+"       "+m2[2][0]+" "+m2[2][1]+" "+m2[2][2]+"       "+s[2][0]+" "+s[2][1]+" "+s[2][2]);	
		

		
	}

	public static double[][] addMatrix(double[][] a, double[][] b){
		double[][] c=new double[3][3];
				
		for(int row=0; row<a.length; row++) {
			for(int column=0; column<a[row].length; column++) {
				
				c[row][column] = a[row][column] + b[row][column] ;
			}
		}
		
		return c;
		
	}
}

 

*10.8(最大的行和列)

package p8;

import java.util.ArrayList;
import java.util.Scanner;

public class Test10 {

	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.print("Enter the array size n: ");
		int n=input.nextInt();
		
		input.close();
		
		System.out.println("The random array is : ");
		
		
		//創建一個二維數組
		int[][] array=new int[n][n];
		
		//下標[row]:行
		//下標[column]:列
		
		//按行,循環賦值,並且輸出
		for(int row=0; row<array.length; row++) {
			for(int column=0; column<array[row].length; column++) {      
				
				array[row][column]=(int) (Math.random()*2);
				
				System.out.print(" "+array[row][column] + " ");
			}
			
			//換行
			System.out.println();
		}
		
//---------------------------------------------------------------------------------------		
//先通過比較,知道哪一行的和最大
		
		
		int maxRow1=0;//"行最大值"——(一行的元素相加得到的最大值)
		int maxIndex1=0;//"行最大值的下標 "——(若某一行具有最大值,則將其下標賦值給maxIndex)    
		
		
		//先計算第一行的和,並且先讓它的和爲最大值,它的下標爲最大值下標。
		//然後拿這個最大值 與 剩下的行的各自的和相比較,找出真正的最大值和最大值下標         
		for(int column=0; column<array[0].length; column++) {
			maxRow1 += array[0][column];
			maxIndex1=0;
		} 
		
		//一一比較找出真正的最大值和最大值下標    
		
		for(int row=1; row<array.length; row++) {
			
			int total=0;//用來放每一行計算得到的和,當換行時,自動清空爲0
			for(int column=0; column<array[row].length; column++) 
				total += array[row][column];
			
			if(maxRow1<total) {
				maxRow1=total;
				maxIndex1=row;
				
			}
			
		}
		
		
		System.out.println("The largest row index: "+maxIndex1);
		
//--------------------------------------------------------------------------------------		
//先通過比較,知道哪一列的和最大
		int maxColumn=0;
		int MaxIndex=0;
		
		for(int row=0; row<array.length; row++) {
			maxColumn += array[row][0];
			MaxIndex=0;
		}
		
		
		for(int column=1; column<array[1].length; column++) {
			
			int all=0;
			for(int row=0; row<array.length; row++) {
				all += array[row][column];
			}
			
			if(maxColumn<all) {
				maxColumn=all;
				MaxIndex=column;
			}
		}
		
		System.out.println("The largest column index: "+MaxIndex);
		
		
		
	}

}

**8.12(財務應用程序:計算稅率)

package p8;

import java.util.Scanner;

//使用數組重寫程序清單3-5
public class E12 {

	public static void main(String[] args) {
		     //六種稅率: 10%,  15%,   25%,    28%,   33%,  35%。
		double[] rates= {0.10, 0.15, 0.25, 0.28, 0.33, 0.35};
		
		int[][] backets= {
				{8350, 33950, 82250, 171550, 372950},//Single
				{16700, 67900, 137050, 208850, 372950},//Married Joint
				{8350, 33950, 68525, 104425, 186475},//Married Separate
				{11950, 45500, 117450, 190200, 372950}//Head of a House
		};
//-----------------------------------------------------------------------------		
		//single
	/*	double tax0=backets[0][0] * rates[0]+
				(backets[0][1] - backets[0][0]) * rates[1] +
				(backets[0][2] - backets[0][1]) * rates[2] +
				(backets[0][3] - backets[0][2]) * rates[3] +
				(backets[0][4] - backets[0][3]) * rates[4] +
				(400000 - backets[0][4]) * rates[5] ;   */
		
		//Married Joint
	/*	double tax1=backets[1][0] * rates[0]+
				(backets[1][1] - backets[1][0]) * rates[1] +
				(backets[1][2] - backets[1][1]) * rates[2] +
				(backets[1][3] - backets[1][2]) * rates[3] +
				(backets[1][4] - backets[1][3]) * rates[4] +
				(income - backets[1][4]) * rates[5] ;   */
		
		////Married Separate
	/*	double tax2=backets[2][0] * rates[0]+
				(backets[2][1] - backets[2][0]) * rates[1] +
				(backets[2][2] - backets[2][1]) * rates[2] +
				(backets[2][3] - backets[2][2]) * rates[3] +
				(backets[2][4] - backets[2][3]) * rates[4] +
				(income - backets[2][4]) * rates[5] ;   */
		
		
		//Head of a House
	/*	double tax3=backets[3][0] * rates[0]+
				(backets[3][1] - backets[3][0]) * rates[1] +
				(backets[3][2] - backets[3][1]) * rates[2] +
				(backets[3][3] - backets[3][2]) * rates[3] +
				(backets[3][4] - backets[3][3]) * rates[4] +
				(income - backets[3][4]) * rates[5] ;  */
		
//-------------------------------------------------------------------------------------		
		Scanner input=new Scanner(System.in);
		System.out.print("(0-single filer, 1-Married Joint or qualifying widow(er), "
				+ "2-Married Separately, 3-Head of a household)\n"
				+ "Enter the filong status:");
		
		int status=input.nextInt();
		
		System.out.print("Enter the taxable intcome: ");
		double taxableIncome=input.nextDouble();
		
		double tax=0;
		
		//status爲0、1、2、3針對每一種身份
				if(status==0) {
					if(taxableIncome<=8350)
						tax=backets[0][0] * rates[0];
					else if(taxableIncome<=33950)
						tax=backets[0][0] * rates[0]+
								(backets[0][1] - backets[0][0]) * rates[1];
					else if(taxableIncome<=82250)
						tax=backets[0][0] * rates[0]+
								(backets[0][1] - backets[0][0]) * rates[1] +
								(backets[0][2] - backets[0][1]) * rates[2];
					else if(taxableIncome<=171550)
						tax=backets[0][0] * rates[0]+
								(backets[0][1] - backets[0][0]) * rates[1] +
								(backets[0][2] - backets[0][1]) * rates[2] +
								(backets[0][3] - backets[0][2]) * rates[3]; 
					else if(taxableIncome<=372950)
						tax=backets[1][0] * rates[0]+
								(backets[1][1] - backets[1][0]) * rates[1] +
								(backets[1][2] - backets[1][1]) * rates[2] +
								(backets[1][3] - backets[1][2]) * rates[3] +
								(backets[1][4] - backets[1][3]) * rates[4];
					else
						tax=backets[0][0] * rates[0]+
								(backets[0][1] - backets[0][0]) * rates[1] +
								(backets[0][2] - backets[0][1]) * rates[2] +
								(backets[0][3] - backets[0][2]) * rates[3] +
								(backets[0][4] - backets[0][3]) * rates[4] +
								(taxableIncome - backets[0][4]) * rates[5];   
				}
				else if(status==1) {
					if(taxableIncome<=16700)
						tax=backets[1][0] * rates[0];
					else if(taxableIncome<=67900)
						tax=backets[1][0] * rates[0]+
								(backets[1][1] - backets[1][0]) * rates[1];
					else if(taxableIncome<=137050)
						tax=backets[1][0] * rates[0]+
								(backets[1][1] - backets[1][0]) * rates[1] +
								(backets[1][2] - backets[1][1]) * rates[2];
					else if(taxableIncome<=208850)
						tax=backets[1][0] * rates[0]+
								(backets[1][1] - backets[1][0]) * rates[1] +
								(backets[1][2] - backets[1][1]) * rates[2] +
								(backets[1][3] - backets[1][2]) * rates[3];
					else if(taxableIncome<=372950)
						tax=backets[1][0] * rates[0]+
								(backets[1][1] - backets[1][0]) * rates[1] +
								(backets[1][2] - backets[1][1]) * rates[2] +
								(backets[1][3] - backets[1][2]) * rates[3] +
								(backets[1][4] - backets[1][3]) * rates[4];
					else
						tax=backets[1][0] * rates[0]+
								(backets[1][1] - backets[1][0]) * rates[1] +
								(backets[1][2] - backets[1][1]) * rates[2] +
								(backets[1][3] - backets[1][2]) * rates[3] +
								(backets[1][4] - backets[1][3]) * rates[4] +
								(taxableIncome - backets[1][4]) * rates[5];  
			
				}
				else if(status==2) {
					if(taxableIncome<=8350)
						tax=backets[2][0] * rates[0];
					else if(taxableIncome<=33950)
						tax=backets[2][0] * rates[0]+
								(backets[2][1] - backets[2][0]) * rates[1];
					else if(taxableIncome<=68525)
						tax=backets[2][0] * rates[0]+
								(backets[2][1] - backets[2][0]) * rates[1] +
								(backets[2][2] - backets[2][1]) * rates[2];
					else if(taxableIncome<=104425)
						tax=backets[2][0] * rates[0]+
								(backets[2][1] - backets[2][0]) * rates[1] +
								(backets[2][2] - backets[2][1]) * rates[2] +
								(backets[2][3] - backets[2][2]) * rates[3];
					else if(taxableIncome<=186475)
						tax=backets[2][0] * rates[0]+
								(backets[2][1] - backets[2][0]) * rates[1] +
								(backets[2][2] - backets[2][1]) * rates[2] +
								(backets[2][3] - backets[2][2]) * rates[3] +
								(backets[2][4] - backets[2][3]) * rates[4] ;
					else 
						tax=backets[2][0] * rates[0]+
								(backets[2][1] - backets[2][0]) * rates[1] +
								(backets[2][2] - backets[2][1]) * rates[2] +
								(backets[2][3] - backets[2][2]) * rates[3] +
								(backets[2][4] - backets[2][3]) * rates[4] +
								(taxableIncome - backets[2][4]) * rates[5] ;
						
				}
				else if(status==3) {
					if(taxableIncome<=11950)
						tax=backets[3][0] * rates[0];
					else if(taxableIncome<=45500)
						tax=11950*0.1+(taxableIncome-11950)*0.15;
					else if(taxableIncome<=117450)
						tax=11950*0.1+(45500-11950)*0.15+(taxableIncome-45500)*0.25;
					else if(taxableIncome<=190200)
						tax=11950*0.1+(45500-11950)*0.15+(117450-45500)*0.25+(taxableIncome-117450)*0.28;
					else if(taxableIncome<=372950)
						tax=11950*0.1+(45500-11950)*0.15+(117450-45500)*0.25+(190200-117450)*0.28+(taxableIncome-190200)*0.33;
					else
						tax=backets[3][0] * rates[0]+
								(backets[3][1] - backets[3][0]) * rates[1] +
								(backets[3][2] - backets[3][1]) * rates[2] +
								(backets[3][3] - backets[3][2]) * rates[3] +
								(backets[3][4] - backets[3][3]) * rates[4] +
								(taxableIncome - backets[3][4]) * rates[5];
				}
				else {
					System.out.println("Error: invalid status");
					System.exit(1);
				}
				
				System.out.println("Tax is "+(int)(tax * 100) / 100.0);	
		
			
	}

}

 

 

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