2017-09-05 1 views
1

저는 Java에 매우 익숙하며 이전에 질문 한 사항을 검색하여 도움을 얻지 못했습니다.클래스간에 변수를 전달하는 방법은 무엇입니까?

기본 변수의 클래스와 문자열 이름을 Person에 전달하는 방법은 무엇입니까? 수업?

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

당신은 당신이 println''에'String'를 전달하거나 같은 방법으로 나이를 통과'에 부동 소수점 값 귀하의 코드는이 작업을 수행하는 방법의 예를 가득 Math.exp'. –

답변

2

이 같은 사람의 생성자를 사용해야합니다 다음

private int age; 
private String name; 

난 당신이 사용할 필요가 같은데 이 클래스는 person 클래스 내부에서 다음과 같이 할 수 있습니다.

double avgSalary = 40000 * Math.sqrt(Math.exp(0.04295 * this.age + 0.141)); 
당신의 Person 객체는 그것을 사용하는

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 p = new Person(name, age); 

나는 또한 (당신이 자바를 배우는 때문에) 추천 할 것입니다 getter/setters와 생성자 접근 방식의 차이점은 다음과 같습니다. 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

당신은 다른 클래스는 가장 기본적인 기능에 필요한 수있는 인수 생성자를 정의 할 것이다. A Person istance는 이름과 나이로 초기화됩니다 (생년월일을 저장하고 현재 날짜와의 나이를 계산하는 것이 더 좋을지라도).

이렇게하려면 다음과 같이하는 클래스 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의 새로운 istance을 만들 것입니다 :

Person p = new(name, date); 
관련 문제