0

私は、オブジェクト指向プログラミングの概念 (継承とオーバーロード コンストラクター メソッド) の使用を学習している初心者プログラマーです。

これで、ユーザーから 5 つの入力を受け取り、出力を表示するコードを作成 (ほとんどコピー) しました。メソッドのオーバーロードを使用すると、3 つの入力を取り、同じ出力を表示することもできます。

これを Swing GUI に実装するにはどうすればよいでしょうか。GUIはこれです

GUI イメージ

ユーザーは、すべての値を指定することも、幅、高さ、および深さから 1 つだけを指定することもできます。

メインコードは

`

class box
{
    private double width;
    private double height;
    private double depth;
    box(box ob)
    {
        width =ob.width;
        height=ob.height;
        depth =ob.depth;
    }
    box(double w,double h,double d)

    {
        width=w;
        height=h;
        depth=d;
    }
    box()
    {
        width=-1;
        height=-1;
        depth=-1;
    }
    box(double len)
    {
        width=height=depth=len;
    }
    double volume()
    {
        return width*depth*height;
    }

 }

class boxweight extends box
{
    private double weight;
    boxweight(boxweight ob)
    {
        super(ob);
        weight= ob.weight;
    }
    boxweight(double w,double h,double d,double m)
    {
        super(w,h,d);
        weight=m;
    }

    boxweight(double len,double m)
    {
        super(len);
        weight=m;

    }

    boxweight() 
    {
        super();
        weight=-1;
    }

    double weightcal()
    {
        return (volume()*weight);
    }


}

class shipment extends boxweight
{
    private double cost;

    shipment(shipment ob) 
    {
        super(ob);
        cost=ob.cost;

    }

    shipment(double w,double h,double d,double m,double c) 
    {
        super(w,h,d,m);
        cost=c;
    }
    shipment (double len,double m,double c)
    {
        super(len,m);
        cost=c;

    }

    shipment() 
    {
        super();
        cost=-1;
    }
    double costcal()
    {
        return(weightcal()*cost);
    }


}


public class Inheritanceallhere {

    public static void main(String[] args) {

        shipment o1=new shipment(10,20,30,40,50);
        shipment o3=new shipment(18.17122,40,50);
        double vol;
        vol = o1.volume();
        System.out.println("Volume of shipment1 is " + vol);
        System.out.println("Weight of shipment1 is "+ o1.weightcal());
        System.out.println("Shipping cost: $" + o1.costcal());
        System.out.println();
        vol =o3.volume();
        System.out.println("Volume of shipment2 is " + vol);
        System.out.println("Weight of shipment2 is "+ o3.weightcal());
        System.out.println("Shipping cost: $" + o3.costcal());

    }
}

`

計算ボタンを押すと、利用可能な値が取得され、適切なメソッドが割り当てられます

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
       double a,b,c,d,e;
       firstsubclass o2=new firstsubclass();
       a=Double.parseDouble(jTextField1.getText());
       b=Double.parseDouble(jTextField2.getText());
       c=Double.parseDouble(jTextField4.getText());
       d=Double.parseDouble(jTextField5.getText());
       e=Double.parseDouble(jTextField6.getText());
       shipment o3=new shipment(a,b,c,d,e);




       jTextField3.setText(String.valueOf(o3.costcal()));

}

このコードを実行して、5 つの入力すべてを取得して計算しました。しかし、3つの値に対して同じことを行うことはできません(幅、高さ、または深さフィールドのいずれかが利用可能です)。制御ステートメントを使用してどのメソッドが機能するかを確認できることはわかっていますが、追加のコードなしで直接実行できるように、Java に動的制御があるかどうかを知りたかったのです。

注意: 両方のコードが同じパッケージに含まれています

4

2 に答える 2

0

利用可能な入力の数を理解し、それに基づいて計算を行うプログラムを作成するにはどうすればよいですか?

各フィールドを個別にテストします。

if (!jTextField1.getText().trim().equals("")) {
    a = Double.parseDouble(jTextField1.getText().trim());
}

次に、Double 値をテストして、どの値が設定されているかを確認します。

于 2013-03-04T18:31:28.333 に答える
0

ArrayList特に一般的な目的で使用するのに適したコレクションとして、Java Collections Framework を検討することをお勧めします。

http://docs.oracle.com/javase/7/docs/technotes/guides/collections/index.html

プログラムに n 個のものがあり、「コンパイル時」にその個数がわからない場合は、ロジックを記述して、もののリストを期待し、リストをループすることができます。

于 2013-03-04T17:06:34.153 に答える