2014-04-11 14 views
0

我正在嘗試使用構造函數創建一個包含兩個類的程序。它必須返回矩形區域和周邊的答案。我寫了這個程序,但我無法弄清楚如何讓它返回。我在創建第二個類和使用構造函數時遇到了問題。Java編程

import java.util.Scanner 


public class RectangleCalc{ 
    public static void main(String[] args) { 
     Rectangle myRect = new Rectangle(1.5, 2.3); 

     double Area; 
     double Perimeter; 

     greetUser(); // method call 
     userInput(); // method call 
     userGoodbye(); // method call 

     myRect.setLength(0); 
     myRect.setWidth(0); 

     Area = myRect.area(); 
     Perimeter = myRect.perim();} 

     public static void greetUser(){ 
     System.out.println("Welcome to the Rectangle Calculator");} 


    public static void userInput(){ 

     System.out.println("This program will accept the user input of length and width to calculate the perimeter and area of a rectangle."); 

     System.out.println("Would you like to continue Y/N?"); 
     System.out.println("Enter the width "); 
     System.out.println("Enter the length "); 
    } 

    public static void Results(double area, double pr, double width, double length){ 
     Scanner input=new Scanner; 

     System.out.println ("The width you entered is:" + width); 
     System.out.println ("The length you entered is:" + length); 
     System.out.println ("The area of your rectangle is:" + area); 
     System.out.println ("The perimeter of your rectangle is:" + pr); 
     System.out.println ("Would you like to calculate another rectangle Y/N?");} 

    public static void userGoodbye(){ 
     System.out.println ("Thank you for using the Rectangle Calculator. Goodbye!");} 


    Rectangle newRect = new Rectangle(10, 20); 

    } 

class Rectangle{ 

    public double width, length; 
    public double len, wid; 

    public void setWidth(double w) { 
     width = w; 
    } 

    public void setLength(double ln) { 
     length = ln; 
    } 

    public double getWidth() { 
     return width; 
    } 

    public double getLength() { 
     return length; 
    } 

    public double area() { 
     double area; 
     area = length * width; 
     return area; 
    } 

    public double perim() { 
     double pr; 
     pr = (length * 2) + (width * 2); 
     return pr; 
    } 

    public Rectangle(double len, double wid) { 
    } 
} 
+0

注意,「雙區域」和「雙週邊」應該是小寫 – jpdymond

回答

2

這裏

public Rectangle(double len, double wid) { 
} 

做到這一點

public Rectangle(double len, double wid) { 
    setLength(len); 
    setWidth(wid); 
} 

這就是它!

+1

爲什麼不直接設置類字段而不是調用公共方法? –

+0

@ C.B。樣式。這樣做有好處,他選擇了前向兼容性選項。 – AJMansfield

+0

他教我們面向對象的編程,我很困惑。我將不勝感激這方面的任何幫助。 – user3524184

1

首先您的問題標題可能更具描述性。

您應該遵循您的Rectangle類中的Java約定,並在其方法之前定義構造函數。我幾乎認爲你沒有寫過。

縮進。雖然Java不依賴正確縮進的代碼,但人類卻是這樣做的。儘量始終保持您的代碼塊和級別統一縮進。使用標籤或幾乎成爲標準的東西 - 每個縮進級別有4個空格。當您的代碼錯誤地縮進時,只會導致難以遵循程序流程和可能的原因錯誤,因爲對任何代碼塊實際上包含哪些代碼塊進行錯誤假設。

Java變量和方法應該以小寫字母開頭(pascalCase是特定的)。 double areadouble perimeter。類名稱是CamelCase,並以大寫字母開頭。
編輯:您也在這裏混淆了代碼標記解析器。看看你的帖子代碼塊中的變量是如何着色的。

但在你的代碼...

你的構造函數接受兩個參數,但從來沒有在任何地方分配的值。他們只是迷路了。
您的userInput()方法提出問題,但不會嘗試獲得任何答案。它只是打印一些文字。
您的Results(...)方法(請參閱上述案例問題)聲明Scanner但未使用它。你可能意味着它進入目前毫無意義的userInput()方法。

所以:
使用在構造函數您定義的制定者,抓住一些用戶輸入您的userInput()方法,如果事情沒有好轉回來這裏,我們可以幫助你更遠。

0

尋找你的代碼,我發現一些問題:

  1. import java.util.Scanner需要在年底分號:import java.util.Scanner;
  2. 掃描儀需要傳遞到構造函數的參數。既然你還沒有真正使用它,也許你可以註釋掉或刪除這行,直到你有東西通過。
  3. 你的Rectangle類沒有在構造函數中設置它的任何字段。試試這個:

    public Rectangle(double len, double wid) { width = wid; length = len; }

  4. 您的Rectangle類重複的(和不必要的)額外的字段:WID和LEN。只使用寬度和長度。