-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);

并且确实像其他答案一样,您应该使用一个 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);
}

注意:您不必要地在代码中创建了两个Scanner对象和两个Rectangle对象,这些对象已从上述代码中删除。

于 2013-08-28T20:25:44.413 回答
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但是,您犯了一些错误:

  • 你声明lengthwidth作为static. 不要那样做。这是没有意义的。长度和宽度是矩形的属性,不应由所有矩形实例共享。
  • 您没有使用正确的命名约定:变量以小写字符开头,类名以大写字符开头。
  • 您正在创建 Rectangle 的两个实例来计算同一矩形的周长和面积。而是共享该实例。
于 2013-08-28T20:21:36.463 回答
1

所以你需要以某种方式设置值......你可以这样做

一个)

Rectangle unitRectangle = new Rectangle(l,w); 

二)

或在矩形类中创建 getter 和 setter ..

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

您的代码由 Default 构造函数组成,它将初始化相应的值 length 和 width0.0为您设置的值,还包括参数化的构造函数,该构造函数需要提供输入值并相应地设置值。

当您创建类的对象时,您在此行中调用默认构造函数而不是参数化构造函数

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 回答
0
//This is the Java code for finding the area and perimeter of a rectangle
package demo;

import java.util.Scanner;

public class DemoTranslation {
public static int area(int length, int width) {
    int areaOfRectangle;
    areaOfRectangle = length * width;
    System.out.println("Area of Rectangle is : " + areaOfRectangle);
    return 0;
}

public static int perimeter(int length, int width) {
    int perimeterOfRectangle;
    perimeterOfRectangle = (length + width) * 2;
    System.out.println("Perimeter of Rectangle is : " + perimeterOfRectangle);
    return 0;
}

public static void main(String[] args) {
    int length, width, choice;
    System.out.println("Enter the length of the triangle ");
    length = STDIN_SCANNER.nextInt();
    System.out.println("Enter the width of the triangle ");
    width = STDIN_SCANNER.nextInt();
    System.out.println("Enter 1 : View the area ");
    System.out.println("Enter 2 : View the perimeter ");
    System.out.println("Enter 3 : view both ");
    choice = STDIN_SCANNER.nextInt();
    switch(choice) {
    case 1:
        area(length, width);
        break;
    case 2:
        perimeter(length, width);
        break;
    case 3:
        area(length, width);
        perimeter(length, width);
        break;
    default:
        System.out.println("Invalid option ");
        break;
    }
    }

    public final static Scanner STDIN_SCANNER = new Scanner(System.in);
    }
于 2019-07-24T17:58:42.717 回答