-1

長方形の長さと幅をコンソールに入力し、その周囲と面積を計算できるようにする必要があります。計算のための入力を受け入れる以外は機能しています。私は近くにいることを知っていますが、それを理解できないようです. よろしくお願いします。私はうまく言えば初心者なので、最初はあなたの答えが意味をなさないかもしれないことを覚えておいてください. コンソールに入力した値を計算できません。

package edu.purdue.cnit325_lab1;

public class Rectangle {    
    private static double length;
    private static double width;

    public Rectangle() {
        length=0.0;
        width=0.0;
    }

    public Rectangle(double l, double w) {
        length = l;
        width = w;
    }

    public double FindArea() {
        return length*width;
    }

    public double FindPerim() {
        return length*2 + width*2;
    }   
}

package edu.purdue.cnit325_lab1;

import java.util.Scanner;

public class TestRectangle {
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
            Scanner scanL = new Scanner (System.in);
            System.out.print("Please enter the length of the rectangle: ");
            double L = scanL.nextDouble();
            Scanner scanW = new Scanner (System.in);
            System.out.print("Please enter the length of the rectangle: ");
            double W = scanW.nextDouble();
            //int W = scanW.nextInt();
            double RectangleArea;
            Rectangle unitRectangle = new Rectangle(); 
            RectangleArea = unitRectangle.FindArea();
            System.out.println("The area of a unit rectangle is " + RectangleArea);

            double RectanglePermiter;
            Rectangle perimRectangle = new Rectangle();
            RectanglePermiter = perimRectangle.FindPerim();
            System.out.println("The permimiter of the unit rectangle is " + RectanglePermiter);
    }
}
4

7 に答える 7

7

引数なしで Rectangle コンストラクターを呼び出しているため、幅と高さをゼロに設定していることに注意してください。

長方形 unitRectangle = new Rectangle(L,W);

実際、他の回答と同様に、1 つの Scanner インスタンスを使用する必要があります。

コーディング スタイルに関するプラス: 変数名を大文字にしないでください。「経験豊富な」Java 開発者にとっては、かなり混乱します。:-)

于 2013-08-28T20:25:35.850 に答える
5

あなたは電話に出ませんparameterized constructorでした。

public static void main(String[] args) {
    Scanner scanL = new Scanner (System.in);
    System.out.print("Please enter the length of the rectangle: ");
    double L = scanL.nextDouble();

    System.out.print("Please enter the length of the rectangle: ");
    double W = scanL.nextDouble();


    Rectangle rectangle = new Rectangle(l,w); 
    double rectangleArea = rectangle .FindArea();
    System.out.println("The area of a unit rectangle is " + rectangleArea);

    double rectanglePermiter = rectangle.FindPerim();
    System.out.println("The permimiter of the unit rectangle is " + rectanglePermiter);
}

注:コード内に 2 つのScannerオブジェクトと 2つのオブジェクトを不必要に作成Rectangleしたため、上記のコードから削除されています。

于 2013-08-28T20:25:44.413 に答える
1

1 つの Scanner インスタンスを使用します。再利用するだけです。

Scanner scanner = new Scanner (System.in);
System.out.print("Please enter the length of the rectangle: ");
double L = scanner.nextDouble();
System.out.print("Please enter the length of the rectangle: ");
double W = scanner.nextDouble();

更新:他の回答が指摘しているように、 Landをコンストラクターに渡さないでください。Wただし、いくつかの間違いを犯しました:

  • あなたはlengthandwidthとして宣言しましstaticた。そうしないでください。それは意味がありません。長さと幅は四角形のプロパティであり、すべての四角形インスタンスで共有されるべきではありません。
  • 正しい命名規則を使用していません。変数は小文字で始まり、クラス名は大文字で始まります。
  • Rectangle の 2 つのインスタンスを作成して、同じ長方形の周囲と面積の両方を計算しています。代わりにそのインスタンスを共有してください。
于 2013-08-28T20:21:36.463 に答える
1

したがって、何らかの方法で値を設定する必要があります...どちらかを行うことができます

A)

Rectangle unitRectangle = new Rectangle(l,w); 

B)

または、長方形クラスでゲッターとセッターを作成します。

setLength(double l) length = l;
setWidth(double w) width = w

double getLength() return length;
double getWidth() return height;

デフォルトのコンストラクタで初期化しているので

別名

 Rectangle unitRectangle = new Rectangle(); 

長さと幅の値もゼロになります。

于 2013-08-28T20:39:08.313 に答える
0

コードは、長さと幅のそれぞれの値0.0を設定どおりに初期化する Default コンストラクターと、入力値を提供する必要があり、それに応じて値を設定するパラメーター化されたコンストラクターで構成されます。

クラスのオブジェクトを作成しているとき、この行でパラメーター化されたコンストラクターの代わりにデフォルト コンストラクターを呼び出しています。

Rectangle unitRectangle = new Rectangle();

したがって、それらを 0.0 に設定します

あなたがこのようなことをしたら

Rectangle unitRectangle2 = new Rectangle(2.3,4.3);

これにより、長さと幅の値がそれぞれ 2.3 と 4.3 のオブジェクトが作成されます。

于 2013-08-30T15:05:41.017 に答える
0
//write a java program which will calculate area and perimeter of rectangle by accepting radius from cmd prompt
//area = width x height,perimeter = (2 x width) + (2 x height)

class AreaAndPerOfRect
{
    int h,w;
    void set(int x,int y)
    {
        h=x;
        w=y;
    }
    int AreaOfRect()
    {
        int area=w*h;
        return area;
    }
    int PerOfRect()
    {
        int per=(2*w)+(2*h);
        return per;
    }
    void disp()
    {
        int area=AreaOfRect();
        System.out.println("area of rectangle"+area);
        int per=PerOfRect();
        System.out.println("area of rectangle"+per);
    }
}
class AreaAndPerOfRectDemo
{
    public static void main(String args[])
    {
        if(args.length!=2)
        {
            System.out.println("please enter two values");
        }
        else
        {
            int x=Integer.parseInt(args[0]);
            int y=Integer.parseInt(args[1]);
            AreaAndPerOfRect ap=new AreaAndPerOfRect();
            ap.set(x,y);
            ap.disp();
        }
    }
}
于 2015-12-19T16:49:48.927 に答える