1. 程式人生 > >Java作業 第十四章

Java作業 第十四章

課後作業
1.根據目錄結構myjava\practice1\Foo.java,寫出Foo類的包名
答案:包名應該命名

package myjava.practice1;

2.改寫第12章中簡答題第3題中的計算器類(Calculator),要求將加減乘除的方法改寫成帶參方法,再定義一個運算方法ope(),接收使用者選擇的運算和兩個數字,根據使用者選擇的運算計算結果
程式碼如下:

public class Calculator2 {  //計算類
     int x; //計算結果
     public int ope(int ae,int num1,int num2) { //計算方法ope
switch (ae) { case 1: x = num1+num2; break; case 2: x = num1-num2; break; case 3: x = num1*num2; break; case 4: x = num1/num2; break; default: System.out.println("輸入正確的字元"); break; } return
x; } }
import java.util.Scanner;
public class CalcTest {     //測試類
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Calculator2 ca2 = new Calculator2();
          Scanner input = new Scanner(System.in);
          System.out.print("請輸入第一個數:");
          int
num1 = input.nextInt(); System.out.print("請輸入第二個數:"); int num2 = input.nextInt(); System.out.print("請選擇運算:1.加法 2.減法 3.乘法 4.除法:"); int ze = input.nextInt(); System.out.println("運算結果為:"+ca2.ope(ze, num1, num2)); } }

3.模擬一個簡單的購房商貸月供計算器,假設按照以下的公式計算出總利息和每月還款金額,

總利息 = 貸款金額 × 利率
每月還款金額 = (貸款金額 + 總利息) ÷ 貸款年限
貸款年限不同,利率是不相同的,規定只有三總年限,利率
年限:3年(36個月) ,利率:6.03%
年限:5年(60個月) ,利率:6.12%
年限:20年(240個月) ,利率:6.39%

程式碼如下:

public class Loan { 
    static int year;    //定義年限
    static double rate; //定義利率
    static double amount;//定義每月還款金額
    static double money; //定義總利息
    //顯示資訊
    public double loan(double loan,int yearchoice){
        switch (yearchoice) {
        case 1:
            rate=0.0603;
            year=36;
            money=loan*rate;
            break;
        case 2:
            rate=0.0612;
            year=60;
            money=loan*rate;
            break;
        case 3:
            rate=0.0639;
            year=240;
            money=loan*rate;
            break;
        default:
            System.out.println("規定只有三種年限!");
            break;
        }

        amount=(loan+money)/year;
        System.out.println("***月供為:"+amount);
        return amount;


    }
}
import java.util.*;
public class LoanTest {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Loan sc = new Loan();
        Scanner input = new Scanner (System.in);
        System.out.print("請輸入貸款金額:");
        double loan = input.nextDouble();
        System.out.print("\n請選擇貸款年限:1. 3年(36個月) 2. 5年(60個月) 3. 20年(240個月):");
        int yearchoice = input.nextInt();
        sc.loan(loan, yearchoice);
    }

}

4.根據指定不同的行以及字元,生成不同的三角形
程式碼如下:

public class LYAR {
public void printTriangle(int row,String ch){
        for (int i = 0; i < row; i++) {
            for (int j = 1; j <=i+1; j++) {
                System.out.print(ch);
            }
            System.out.println(" ");
        }
    }
}
import java.util.*;
public class Test {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        LYAR lyar = new LYAR();
        Scanner input = new Scanner (System.in);
        System.out.print("請輸入行高:");
        int row = input.nextInt();
        System.out.print("請輸入列印的字元:");
        String ch = input.next();
        lyar.printTriangle(row, ch);
    }
}

5.根據三角形的三條邊長,判斷其是直角,鈍角,還是銳角三角形,程式要求如下:

先輸入三角形三條邊的邊長
判斷是否構成三角形,構成三角形的條件是”任意兩邊之和大於第三邊”,如果不能構成三角形則提示”不是三角形”
如果能構成三角形,判斷三角形是何種三角形,如果三角形有一條邊的平方等於其他兩條邊平方的和,則為直角三角形,如果有一條邊的平方大於其他兩條邊平方的和,則為鈍角三角形,否則為,直角三角形

程式碼如下:

public class triangle {
    public boolean isTriangle(int a,int b,int c){
        boolean flag = false;
        if (a+b>c&&a+c>b&&b+c>a) {
            return true;
        }else {
            System.out.println("這不能構成三角形");
        }
        return flag;
    }

    public String shape(int a, int b, int c){
        String shape ="";   

        if ((a*a+b*b==c*c)||(a*a+c*c==b*b)||(c*c+b*b==a*a)) {
            shape="直角三角形";
            System.out.println("這是一個"+shape);   
        }else if((a==b)&&(b==c)){
        shape ="等邊三角形";
        System.out.println("這是一個"+shape);
        }else if(a*a+b*b>c){
            shape = "銳角三角形";
            System.out.println("這是一個"+shape);
        }else if((a*a+b*b>c*c)||(a*a+c*c>b*b)||(c*c+b*b>a*a)){
            shape = "鈍角三角形";
            System.out.println("這是一個"+shape);
        }
        return shape;
    }

}
import java.util.*;
public class Test2 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner (System.in);
        String LYAR ="";
        do {
            triangle sc = new triangle();
            System.out.print("請輸入第一條邊長:");
            int a =input.nextInt();
            System.out.print("請輸入第二條邊長:");
            int b = input.nextInt();
            System.out.print("請輸入第三條邊上:");
            int c =input.nextInt();
            sc.isTriangle(a, b, c);
            sc.shape(a, b, c);
            System.out.print("繼續嗎?(y/n):");
            LYAR = input.next();
            if(LYAR.equals("n")){
                System.out.println("退出程式!");
                break;  
            }
        } while (LYAR.equals("y"));

    }

}

6.編寫向整型陣列的指定位置插入元素,並輸出插入前後陣列的值
程式碼如下:

public class shuzu {
    public void insertArray(int[] arr, int index, int value) {
        int array[] = new int[arr.length + 1];
        for (int i = 0; i < arr.length; i++) {
            array[i] = arr[i];
        }
        for (int i = array.length - 1; i > index; i--) {
            array[i] = array[i - 1];
        }
        array[index] = value;
        System.out.println("插入後的陣列:");
        for (int i = 0; i < array.length; i++) {
            if (array[i] != 0) {
                System.out.print(array[i] + "\t");
            }
        }
    }
}
//測試類
import java.util.*;
public class shuzuTest {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);
        shuzu sc = new shuzu();
        int arr[] = new int[7];
        arr[0] = 1;
        arr[1] = 2;
        arr[2] = 3;
        arr[3] = 4;
        arr[4] = 5;
        arr[5] = 6;
        arr[6] = 7;
        System.out.println("插入前的陣列:");
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != 0) {
                System.out.print(arr[i] + "\t");
            }
        }
        System.out.print("\n請輸入要插入陣列的位置:");
        int index = input.nextInt();
        System.out.print("請輸入要插入的整數:");
        int value = input.nextInt();
        sc.insertArray(arr, index, value);
    }

}

7.本學期期末學員共參加了三門課的考試,即Java,C# , SQL,編寫方法計算每位同學三門課程的平均分
程式碼如下:

//三門課的成績屬性
public class Student {
    int java;   //Java成績
    int C;      //C#成績
    int sql;    //資料庫成績
}
//方法
public class StudentBiz {
    Student[] student = new Student[30];
    public void getAvg(Student stu) {
        for (int i = 0; i < student.length; i++) {
            if (student[i] == null) {
                student[i] = stu;
                break;
            }
        }
    }
    public void getavg(int arr[], int num) {
        // 引數分別為:java成績,c#成績,資料庫成績,學生人數
        double[] arr2 = new double[num + 1];
        for (int i = 0; i < num + 1; i++) {
            arr2[i] = arr[i] / 3.0;
        }
        for (int i = 0; i < arr2.length; i++) {
            System.out.println("第" + (i + 1) + "位同學的平均分為:" + arr2[i]);
        }
    }

}
//學生測試類
import java.util.*;
public class StudentTest {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);
        Student stu[] = new Student[30]; // 建立學生類物件陣列
        StudentBiz stus = new StudentBiz(); // 建立StudentBiz類物件
        Student student = new Student(); // 建立學生類物件
        int js[] = new int[stu.length]; // 建立一個數組來接收每一個學生的總成績
        int index = 0; // 獲取學生的人數
        for (int i = 0; i < stu.length; i++) {
            int tatleScore = 0; // 初始化總成績並每次清零;
            System.out.println("第" + (i + 1) + "位同學的成績為:");
            System.out.print("java成績為:");
            student.java = input.nextInt();
            System.out.print("c#的成績為:");
            student.C = input.nextInt();
            System.out.print("SQL的成績為:");
            student.sql = input.nextInt();
            tatleScore = student.java + student.C + student.sql;
            for (int j = 0; j < js.length; j++) { // 迴圈用陣列接收總成績
                if (js[i] == 0) {
                    js[i] = tatleScore;
                    break;
                }
            }
            System.out.print("是否繼續輸入(y/n):");
            String flag = input.next();
            System.out.println("");
            stus.getAvg(student); // 呼叫方法增加學生資訊

            if (flag.equals("n")) {
                index = i;
                System.out.println("輸入完成!");
                break;
            }
        }
        System.out.println("學生的平均分為:");
        stus.getavg(js, index); // 呼叫方法
    }

}