2014-02-09 6 views
-1

У меня есть следующий код - в Java btw-, и он компилируется отлично, но когда я ввожу недопустимые параметры, он не распознает их как ошибки и принимает их так, как если бы они выполнил условия. Метод, который меня касается, - SetMPG (int average). Это мой первый раз, поэтому я приношу свои извинения, если мой вопрос будет расплывчатым, я при необходимости добавлю дополнительную информацию.Метод есть, но он не работает, как это должно быть

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

Это действительно помогло решить мою проблему, спасибо всем за это. Я спрашиваю об этом, потому что я сам изучаю этот дом @, но возможно ли, что вместо него говорит «java.lang ...», он просто отображает сообщение «Ценности должны быть положительными»? или я должен использовать блок try и catch для этого? –

+0

Есть разные способы приблизиться к нему, но, вероятно, самым простым способом является введение блока try/catch в ваш VehicleTest, чтобы поймать исключение и распечатать сообщение. –

Смежные вопросы