2014-02-09 6 views
-1

다음 코드가 있습니다. Java btw-에서 제대로 컴파일되지만 잘못된 매개 변수를 입력하면 오류로 인식되지 않고 그대로 받아들입니다 조건을 만났습니다. 나를 염려하는 방법은 SetMPG (int 평균)입니다. 내 질문이 애매한 경우 사과 드리며 필요한 경우 더 많은 정보를 입력하겠습니다.메서드는 있지만 작동하지 않습니다.

public class Vehicle { 
    // instance variables - replace the example below with your own 
    private int tireCount; 
    private int mPG; 

    /** 
    * Constructor for objects of class Vehicle 
    */ 
    public Vehicle(int tCount, int mP) { 
     // initialise instance variables 
     tireCount = tCount; 
     mPG = mP; 
    } 


    public void setTire(int tire) { 
     if (tire >= 0) { 
      tireCount = tire; 

     } else/*if(tire < 0)*/ { 
      throw new IllegalArgumentException("Values must be positive"); 
     } 

    } 

    public void setMPG(int average) { 
     if (average > 0) { 
      mPG = average; 
     } else if (average < 0) { 

      throw new IllegalArgumentException("Values must be positive"); 
     } 

    } 

    public int getTire() { 
     return tireCount; 
    } 

    public int getMPG() { 
     return mPG; 
    } 

    public String toString() { 
     return String.format("There are " + tireCount + " tires and an average of " + mPG + "mpg"); 
    } 

public class VehicleTest 
{ 
// instance variables - replace the example below with your own 
public static void main(String []args) 
{ 
    Vehicle bike = new Vehicle(2,-23); // first parameter is for tires , second is for MPG 
    System.out.println(bike); 

} 
} 
+0

어떻게 잘못된 매개 변수를 입력하고 있습니까? –

+0

드라이버 클래스에서 나는 음수 값을 가진 인스턴스를 사용합니다. E.G : -32, -9, -11 등. –

+0

올바르게 컴파일 되었습니까? 이 코드 블록의 모든 곳에서 구문 오류가 발생했습니다. –

답변

1

귀하의 코드와 당신이 말하는 바에 따르면, 당신은 생성자를 통해 매개 변수를 설정하는 것이 가장 가능성이 높습니다. 생성자를 다음 형식으로 변경하십시오.

public Vehicle(int tCount , int mP) 
{ 
    // initialise instance variables 
    setTire(tCount); 
    setMPG(mP); 
} 

또한 0이 mpg에 유효한 값인지 여부도 확실하지 않습니까 ???

public void setMPG(int average) 
{ 
    if(average > 0) //should it be >= 0??? 
    { 
     mPG=average; 
    } 
    else if(average < 0) // should it be <=0 ???? 
    { 
     throw new IllegalArgumentException("Values must be positive"); 
    } 
} 
+0

그게 실제로 작동하고 내 문제를 해결 했어, 고마워. 나는이 @ home을 스스로 공부하고 있기 때문에 이것을 묻는다.하지만 "java.lang ..."을 말하는 대신 "Values ​​should positive"라는 메시지 만 표시 할 수 있는가? 또는 try와 catch 블록을 사용해야합니까? –

+0

접근 방법은 다양하지만 가장 쉬운 방법은 VehicleTest에 try/catch 블록을 도입하여 예외를 잡아 내고 메시지를 인쇄하는 것입니다. –

관련 문제