如何在类之间传递变量?

时间:2017-09-05 18:25:39

标签: java

我是Java的新手,并搜索了以前提出的问题,这些问题对我的问题没有帮助......

如何将int变量age和String名称从main类传递给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
    }

}

3 个答案:

答案 0 :(得分:3)

你应该像这样使用Person构造函数:

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

在构造函数之前在Person类中添加两个字段:

private int age;
private String name;

然后我假设你需要在person类中使用这个变量,为了做到这一点,你可以这样做:

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),要理解getter / setter和构造函数方法之间的区别:Setter methods or constructors

答案 1 :(得分: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;
}

答案 2 :(得分:0)

您可能希望使用任何参数定义构造函数,而另一个类可能需要最基本的功能。 Person的费用将使用姓名和年龄进行初始化(即使最好存储出生日期并根据当前日期计算年龄)。

为此,您需要班级Person看起来像这样:

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

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

main()方法中,您可以在获得所需内容后创建新的Person,如下所示:

Person p = new(name, date);