2017-01-24 10 views
1

私はこのJavaプログラムを使用して、長さと幅の入力を行い、総面積と周囲長を計算します。エクササイズの指示に従って、MainとRectangleという2つのクラスを使用します。私が持っている問題は、長さと幅の値をメインクラスからRectangleクラスに渡す方法がわかりません。私がプログラムを実行すると、ゼロ値が返され、Mainクラス内のローカル変数(長さと幅)が使用されていないことがわかります。 Rectangleクラスでは引数がゼロのコンストラクタしか使用できません。なぜなら、これはエクササイズが必要とするものだからです。私は2つの引数(長さと幅)を受け付ける別のコンストラクタを使ってプログラムを動作させる方法を知っています。私はGoogle検索し、このフォーラムを通して見ているが、私はまだこれを理解することはできません。誰かに私にいくつかのヒントを与えることができます、ありがとう。Javaのあるクラスから別のクラスに変数値を渡す

ここにMainクラスがあります。

package murach.rectangle; 

import java.util.Scanner; 
import murach.rectangle.Rectangle; 



public class Main { 

    public static void main(String args[]) { 
    System.out.println("Welcome to the Area and Perimeter Calculator"); 
    System.out.println(); 

    Scanner sc = new Scanner(System.in); 
    String choice = "y"; 
    while (choice.equalsIgnoreCase("y")) { 
     // get input from user 
     System.out.print("Enter length: "); 
     double length = Double.parseDouble(sc.nextLine()); 

     System.out.print("Enter width: "); 
     double width = Double.parseDouble(sc.nextLine()); 

     Rectangle rectangle = new Rectangle(); 

     String message = 
      "Area:   " + rectangle.getAreaNumberFormat() + "\n" + 
      "Perimeter: " + rectangle.getPerimeterNumberFormat() + "\n"; 
     System.out.println(message); 

     // see if the user wants to continue 
     System.out.print("Continue? (y/n): "); 
     choice = sc.nextLine(); 
     System.out.println(); 
    } 
    sc.close(); 
    System.out.println("Bye!"); 
    } 
} 

ここでRectangleクラスです。

package murach.rectangle; 

import java.text.NumberFormat; 

public class Rectangle { 


    private double width; 
    private double length; 


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


    public double getWidth() { 
    return width; 
    } 

    public void setWidth(double width) { 
    this.width = width; 
    } 
    public double getLength() { 
    return length; 
    } 
    public void setLength(double length) { 
    this.length = length; 
    } 
    public double getArea() { 
    double area = length * width; 
    return area; 
    } 
    public double getPerimeter() { 
    double perimeter = 2 * width + 2 * length; 
    return perimeter; 
    } 
    public String getAreaNumberFormat() { 
    NumberFormat number = NumberFormat.getNumberInstance(); 
    number.setMinimumFractionDigits(3); 
    String numberAreaFormatted = number.format(width); 
    return numberAreaFormatted; 
    } 
    public String getPerimeterNumberFormat() { 
    NumberFormat number = NumberFormat.getNumberInstance(); 
    number.setMinimumFractionDigits(3); 
    String numberPerimeterFormatted = number.format(length); 
    return numberPerimeterFormatted; 
    } 

} 

答えて

2

あなたがフィールドを更新するために、あなたのセッターを呼び出す必要があります:

Rectangle rectangle = new Rectangle(); 
rectangle.setLength(length); 
rectangle.setWidth(width); 

サイド注:「高さ」は、用語「長さ」よりも、従来とそれほど曖昧です。

+0

第3次元を表す3次元オブジェクトに「高さ」が使用されていると思います。さもなければ、すべての2D構造IMOは長さと幅(または幅)を持っています。 –

+0

@PavanKumarおそらく、高さ、幅、深さを指定します。しかし、正直言って、私は3Dオブジェクトに慣れていません。 – shmosel

+0

shmoselさん、ありがとうございました! –

関連する問題