2016-10-24 5 views
-3

자바 프로그래밍 과정을위한 프로젝트가 있습니다.데모/테스터 프로그램 구현

지침은 간단한 클래스와 테스터 클래스를 만들어야하며 클래스에는 Default 생성자가 포함되어야합니다. 세 가지 매개 변수 (작성자, 모델 및 가격)가있는 매개 변수화 된 생성자. getMake()를 호출 해, make를 돌려주는 액세스 용 메소드. 모델을 돌려 주도록 (듯이) getModel()를 호출하는 액세스 용 메소드. getPrice()를 호출하여 가격을 반환하는 접근 자 메서드. Mutator 메서드 setMake (String newMake) make를 설정합니다. 모델을 설정하는 Mutator 메소드 setModel (String newModel); 및 가격을 설정하는 뮤 테이터 메서드 setPrice (double newPrice) ..

내 클래스 및 테스터 프로그램을 만들었고 클래스가 완벽하게 컴파일됩니다. 실행하려고 할 때 메인 메서드가 없다는 오류가 발생하지만. 이제, 나는 테스터 프로그램에 대한 교수의 예를 따랐다. 누군가가 올바른 방향으로 포인터를 줄 수 있다면, 나는 그것을 감사 할 것입니다.

내 질문은 다음과 같습니다. 테스터 프로그램을 어떻게 구현합니까? zip 파일을 만들어야합니까? 다음은 나의 시험 클래스 (이 사람이다,

public class Automobile 
{ 
    private String make;  
    private String model; 
    private double price; 

    public Automobile() 
    { 
     make = "Lexus2017"; 
     model = "RX"; 
    } 

    public Automobile(String initMake, String initModel, double initPrice) 
    { 
     make = initMake; 
     model = initModel; 
     price = initPrice; 
    } 

    public String getMake() 
    { 
     return make; 
    } 

    public String getModel() 
    { 
     return model; 
    } 

    public double getPrice() 
    { 
     return price; 
    } 

    public void setMake(String newMake) 
    { 
     make = newMake; 
    } 

    public void setModel(String newModel) 
    { 
     model = newModel; 
    } 

또한 : 나는

다음

는 클래스 내 코드는 ... 그렇게하고 많은 도움을 보이지 않았다 시도했습니다 오류가 많은) :

public class AutomobileTester 
{ 
    public static void main(String[] args) 
    { 
     Automobile make = new Automobile("Lexus 2017"); 
     System.out.println("The car is " + make.getMake()); 

     Automobile model = new Automobile("RX"); 
     System.out.println("The car is " + Automobile.getModel()); 

     Automobile price = new Automobile("43020"); 
     System.out.println("The car is " + Automobile.getPrice()); 

     // Use the mutator to change the make variable 
     Automobile.setMake("Lexus 2017"); 
     System.out.println("The car is " + backDoor.getState()); 

     // Use the mutator to change the model variable 
     Automobile.setModel("RX"); 
     System.out.println("The car is called " + backDoor.getName()); 

     Automobile.setPrice("43020"); 
     System.out.println("The car is " + price.getPrice()); 
    } 
} 

이 내 처음 생성자와 함께 일하고있다, 나는 자바에 아주 새로운 해요, 그래서 명백한 오류에 대해 죄송합니다. 시간과 도움을 미리 주셔서 감사합니다.

+1

'

또 다른 옵션은 자신의 빌더를 사용하여 매개 변수를 전달하는 것입니다 t로 매개 변수화 된 생성자 새로운 자동차 ("Lexus 2017"); ' –

+0

클래스 이름을 사용하여 메소드에 액세스하지 마십시오. 여기에 많은 오류가 있습니다. 우리 모두를 고치고 당신을 위해 임무를 수행하기를 기대합니까? –

+0

@ cricket_007 아니요. 어리석은 일이고 나는 그런 식으로 아무것도 배울 수 없습니다. 클래스를 구현하는 방법을 이해하고 싶습니다. 3 번 챕터를 읽고 강의 노트를 듣고 무언가가 나를 클릭하지 않기 때문입니다. 난 단지 컨텍스트에 대한 내 코드를 넣고 싶었어요. –

답변

1

첫 번째 문제 중 하나는 생성자에 대한 호출에 적절한 수의 매개 변수를 사용하지 않는다는 것입니다. Java (및 대부분의 프로그래밍 언어)에서는 메소드/함수에 필요한 모든 매개 변수를 제공해야합니다/생성자를 호출합니다. 코드에 대한 수정이 사용하는 것입니다 : 당신이 먼저 당신이 static 호출을 사용하여 다음 instance 전화를 사용하는 자동차 정보를 인쇄 할 때 또한

Automobile car = new Automobile("Lexus 2017", "RX", 43020.0D); 

을, 나는 차이로 많이 이동하지 않습니다 두 가지이지만 기본적으로 instance 호출을 사용하면 static에는 개체를 인스턴스화해야합니다. 변수를 변경으로

System.out.println("The car is a " + car.getMake() + ", the brand is " + car.getModel() + ", the price is $" + car.getPrice()); 

을 사용한다 :

car.setMake("My New Car Make"); 

대신 : static와의 차이를 들어

Automobile.setMake("My New Car Make"); 

이 문제에 대한 수정해야 할 것 instancehere, herehere입니다.

+0

'자동차 자동차 = 새로운 자동차 ("Lexus 2017", "RX", 43020.0D);'를 사용하면 43020 이후 D가 가격을 이중 변수로 인식합니까? 또한, 내 임무는 정적이 아닌 인스턴스 변수를 사용한다고 말합니다. 그것은 다음 장까지 오지 않습니다. –

+0

클래스 이름은 무엇입니까? 괜찮습니까? 자동차 및 자동차 테스터? 이러한 이름을 통해 프로그램은 수업을 구현하는 것을 알고 있습니까? –

+0

'd' 또는'D' 문자는 해당 번호가'double' 유형임을 나타냅니다.이 유형의 식별자에 대한 자세한 내용은 [here]입니다 (https://docs.oracle.com/javase/tutorial/java/nutsandbolts). /datatypes.html). 정적 대 인스턴스 변수의 사용에 관해서는 인스턴스 호출을 사용해야하는 정적 호출을 사용하고 있음을 지적했습니다. 이름에 관해서는 클래스를 올바르게 인스턴스화 할 수 있어야 정확히 입력 한 것이어야하지만 원하는대로 사용할 수 있습니다. [IDE] (https://en.wikipedia.org/wiki/Integrated_development_environment) 그걸 도울 수 있어요. –

0

올바르게 입력하십시오. Automobile 클래스의 make 인스턴스 변수를 사용하여 메서드에 액세스했습니다.

: 다른 곳은 Automobile.someMethod() 사용하는 것이 지금

Automobile make = new Automobile("Lexus 2017"); 
System.out.println("The car is " + make.getMake()); 

(보조 노트 만들기가 아니라 car1를 호출하거나, 뭔가 자동차 인스턴스에 대한 나쁜 이름) 당신이 필요하기 때문에, 즉, 옳지 않아 전체 클래스가 아닌 인스턴스 중 하나에서 데이터를 설정하거나 가져옵니다.

그런 다음 마지막으로 해당 클래스에있는 세 개의 매개 변수로 생성자를 테스트해야합니다.

+0

고맙습니다. "make"는 우리 교수가 우리가 사용하기를 원하는 인스턴스 변수이지만 car1, car2, work가 두 개의 자동차 객체를 만들어야 만합니까?'setMake (String newMake)'와 같은 것을 사용할 것인가? 그리고 모든 인스턴스 변수에 대해 그렇게합니까? –

+0

나는 'String make'에 대해서 말하고있는 것이 아니라, Automatible make = new Automobile (...)에 대해서 이야기하고있다. 왜냐하면 그 자동차가 make를 가지고 있기 때문이다. 그렇지만 make 자체는 아니다. –

0

생성자 호출에 오류가 있습니다. 생성자는 세 가지 매개 변수 (make, model 및 price)를 사용하지만 메서드를 호출하면 매개 변수 만 전송합니다. 그것은 오류입니다. 기본적으로 Java 클래스 생성자는 매개 변수를 사용하지 않습니다 (이 경우 "new Automobile()"이됩니다). 테스터를 구현하려면 두 가지 옵션이 있습니다. 먼저, 파라미터없이 생성자를 이용하여 차를 생성하고 설정 파라미터 :

Automobile auto = new Automobile(); 
auto.setMake("Lexus 2017"); 
auto.setModel("RX"); 
auto.setPrice(43020); 

자동차는 자동차 (= 새로운 자동차 만들);

Automobile auto2 = new Automobile("Lexus 2017", "RX", 43020); 

Automobile.java :

public class Automobile { 
private String make; 
private String model; 
private double price; 

public Automobile() { 
} 

public Automobile(String make, String model, double price) { 
    this.make = make; 
    this.model = model; 
    this.price = price; 
} 

public String getMake() { 
    return make; 
} 

public void setMake(String make) { 
    this.make = make; 
} 

public String getModel() { 
    return model; 
} 

public void setModel(String model) { 
    this.model = model; 
} 

public double getPrice() { 
    return price; 
} 

public void setPrice(double price) { 
    this.price = price; 
} 
} 

AutomobileTester.java :

public class AutomobileTester { 

public static void main(String[] args) { 

    Automobile auto = new Automobile(); 
    auto.setMake("Lexus 2017"); 
    auto.setModel("RX"); 
    auto.setPrice(43020); 
    System.out.println("The car1 is " + auto.getMake() + " " + auto.getModel() + " " + auto.getPrice()); 

    Automobile auto2 = new Automobile("Lexus 2017", "RX", 43020); 
    System.out.println("The car2 is " + auto2.getMake() + " " + auto2.getModel() + " " + auto2.getPrice()); 

} 

}

+0

하지 않을 것이다. 자동차 자동차 make = new(); 중복 되니? 또한 메서드의 매개 변수를 인스턴스 변수와 같게 만들 때이 매개 변수를 사용한다는 것도 알고 있습니다. 언제 그들을 사용하고 싶지 않으십니까? –

+0

그래, 그게 실수 야. 자동차 자동 = 새로운 자동차(); 여러 매개 변수 만 사용하려는 경우 여러 생성자를 구현할 수 있습니다. 예를 들어 가격 만 사용하려는 경우 공용 자동차 (이중 가격) { this.price = price; } 그리고 호출은 Automobile auto = new Automobile (1000); 또는 가격과 모델을 사용하려는 경우 공용 자동차 (문자열 모델, 이중 가격) { this.model = model; this.price = price; } 전화는 다음과 같습니다. Automobile auto = new Automobile ("Rx", 1000); – Juan