2017-09-05 7 views
1

私は非常にJavaに慣れていて、問題を解決してくれなかった以前の質問を検索しました...クラス間で変数を渡す方法は?

メイン変数からPersonクラス?その後、私はあなたが使用する必要があると仮定しています

private int age; 
private String name; 

public Person(int age, String name) { 
    this.age = age; 
    this.name = name; 
} 

そして、あなたのコンストラクタの前に、あなたのPersonクラスに二つのフィールドを追加します。

package engineers; 

import java.util.Scanner; 


public class Engineers { 

    public static void main(String[] args) { 
     // TODO code application logic here 

     Scanner scan = new Scanner(System.in); //declaration and ssignment of scanner 
     System.out.println("Enter name: "); //name prompt 
     String name = scan.next(); //reads name input from user 

     System.out.println("Enter age: "); //age prompt 
     int age = scan.nextInt(); //reads age input from user 

     System.out.println("Pay check amount: "); 
     double salary = scan.nextDouble(); 
     Person person = new Person(); 


    } 

    private static class Person { 
     /** 
     * A default constructor 
     */ 
     public Person() { 
     } 
     /** 
     * method for displaying the computation result 
     */ 

     double avgSalary = 40000 * Math.sqrt(Math.exp(0.04295 * age + 0.141)); 


     public void showData(int age, double pay){ 
      System.out.printf("%s earns $%4.3f for age %3d.\n", name, (pay*Math.sqrt(age)*.15), age); 
     }//end method showData 
    } 

} 
+0

あなたが 'あなたのコードはこれを行う方法の例がいっぱいですMath.exp'に' println'または浮動小数点値に 'STRING'を渡すのと同じ方法で年齢を渡します。 –

答えて

2

あなたは、このように人のコンストラクタを使用する必要があります人のクラス内のこの変数は、これを行うために、あなたは次のような何かをすることができます:

double avgSalary = 40000 * Math.sqrt(Math.exp(0.04295 * this.age + 0.141)); 

あなたの変数参照するには:

public void showData(){ 
    System.out.printf("%s earns $%4.3f for age %3d.\n", this.name, (pay*Math.sqrt(this.age)*.15), this.age); 
}//end method showData 

Finnalyを、あなたはそれを使用するようにPersonオブジェクトをインスタンス化する必要があります。

Person p = new Person(name, age); 

私も理解して、(あなたは、Javaを学習しているので)推薦ゲッター/セッターとコンストラクターのアプローチの違い:Setter methods or constructors

+1

はい、あなたは正しいです! @PeterLawreyありがとう! –

0

これはどういう意味ですか?

int age; 
String name; 

class Person(int age, String name) { 
     this.age = age; 
     this.name = name; 
} 

か(そして)

void setAge(int age) { 
    this.age = age; 
} 

void setName(String name) { 
    this.name = name; 
} 
0

あなたは別のクラスは、最も基本的な機能のために必要がある場合があります任意の引数を持つコンストラクタを定義したいと思います。 Person istanceは名前と年齢で初期化されます(誕生日を保存し、現在の日付と年齢を計算する方が良いでしょう)。

これを行うには、あなたはこのように見えるクラスPersonを必要とするだろう:main()方法で

public class Person{ 
    private String name; 
    private Date birthdate; 

    //Constructor method 
    public Person(String n, Date bd){ 
     name=n; 
     birthdate=bd; 
    } 
    //Other methods 
} 

、あなたは、このように、必要なものを取得した後、Personの新しいistanceを作成します。

Person p = new(name, date); 
関連する問題