只寫了幾題(待以後更新.......)
*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);
}
}