1. 程式人生 > >JavaSE程式設計題目~4

JavaSE程式設計題目~4

Java介面相關的練習~

1. 說出下面程式的執行結果:
interface InterfaceA {
    String S = "good ";
    void f();
}
abstract class ClassA {
    abstract void g();
}
class ClassB extends ClassA implements InterfaceA {
    void g() {
        System.out.print(S);
    }
    public void f() {
        System.out.print(" "+ S);
    }
}
public class Test {
    public static void main(String[] args) {
        ClassA a = new ClassB();
        InterfaceA b = new ClassB();
        a.g();
        b.f();
    }
}
//編譯結果:輸出good good
2. 利用介面做引數,寫個計算器,能完成加減乘除運算。

(1)定義一個介面Compute含有一個方法int computer(int n, int m)。
(2)設計四個類分別實現此介面,完成加減乘除運算。
(3)設計一個類UseCompute,類中含有方法:public void useCom(Compute com, int one, int two),此方法能夠用傳遞過來的物件呼叫computer方法完成運算,並輸出運算的結果。
(4)設計一個主類Test,呼叫UseCompute中的方法useCom來完成加減乘除運算。

interface ICompute{
    public int Computer(int m,int n);
}
class Add implements ICompute{
    public int Computer(int m,int n){
        return m+n;
    }
}
class Sub implements ICompute{
    public int Computer(int m,int n){
        return m-n;
    }
}
class Mul implements ICompute{
    public int Computer(int m,int n){
        return m*n;
    }
}
class Divs implements ICompute{
    public int Computer(int m, int n) {
        if(n!=0) {
            return n/m;
        }else {
            System.out.println("分母不能為零");
            return 0;
        }
    }
}
class UseCompute{
    public void usecom(ICompute com,int m,int n) {
        System.out.println(com.Computer(m,n));
    }
}
public class Test{
    public static void main(String[] args) {
        UseCompute useCompute = new UseCompute();
        useCompute.usecom(new Add(), 10, 20);
        useCompute.usecom(new Sub(), 10, 20);
        useCompute.usecom(new Mul(), 10, 20);
        useCompute.usecom(new Divs(), 10, 20);
        useCompute.usecom(new Divs(), 10, 0);
    }
}
3. 按如下要求編寫Java程式:

(1)定義介面A,裡面包含值為3.14的常量PI和抽象方法double area()。
(2)定義介面B,裡面包含抽象方法void setColor(String c)。
(3)定義介面C,該介面繼承了介面A和B,裡面包含抽象方法void volume()。
(4)定義圓柱體類Cylinder實現介面C,該類中包含三個成員變數:底圓半徑radius、圓柱體的高height、顏色color。
(5)建立主類來測試類Cylinder。

interface IA{
    double PI = 3.14;
    public abstract double area();
}
interface IB{
    abstract void setColor(String c);
}
interface IC extends IA,IB{
    void volume();
}
abstract class Temp implements IC{
    public double area(double d){};
    public void setColor(String c){};
    public void volume(){};
}
class Cylinder extends Temp{
    private double PI = 3.14;
    private double radius;
    private double height;
    private String color;
    public double area(double radius){
        this.radius = radius;
        System.out.println("area is"+(radius*radius*PI));
    }
    public void setColor(String color){
        this.color = color;
        System.out.println("color is"+color);
    }
    public void volumn(double height){
        this.height = height;
        System.out.println("volumn is"+(radius*radius*PI*height));
    }
}
public class Test{
    public static void main(String[] args) {
        Cylinder cy = new Cylinder();
        cy.area(3.0);
        cy.setColor("絢麗紫");
        cy.volumn(4.0);
    }
}
4. 程式設計求完數

一個數如果恰好等於它的因子之和,這個數就稱為 "完數 "。例如6=1+2+3.程式設計 找出1000以內的所有完數。

public class Test{
    public static void main(String[] args) {
        for(int i = 1; i<1000; i++){
            // 找因子:讓這個數對“從1到它本身的½值”取餘,結果為0。
            int sum = 0;
            for (int j=1; j<=(i/2); j++){
                if (i%j == 0){
                    sum = sum + j;
                }
            }
            if(sum == i){
                System.out.println("完數為"+i);
            }
        }
    }
}