Неверное исключение аргумента для java - PullRequest
1 голос
/ 25 февраля 2020

Я новичок в java и пытаюсь узнать об обработке исключений, поэтому мой код выглядит так:

public class CircleWithException {
private double radius;
private static int numberOfObjects = 0;

public CircleWithException (){
    this(1.0);
}

public CircleWithException (double newRadius){
    setRadius(newRadius);
    numberOfObjects++;
}

public double getRadius(){
    return radius;
}

public void setRadius(double newRadius) throws IllegalArgumentException {
    if(radius>=0) radius = newRadius;
    else if(radius<0)
        throw new IllegalArgumentException("Radius cannot be negative");
}

public static int getNumberOfObjects(){
    return numberOfObjects;
}

public double findArea(){
    return radius*radius*Math.PI;
}

, а основной метод - так

public class ApplicationCircle {
public static void main(String[] args){
    try{
        CircleWithException  c1 = new CircleWithException (5);
        CircleWithException  c2 = new CircleWithException (-5);
        CircleWithException  c3 = new CircleWithException (0);
    }

    catch (IllegalArgumentException ex){
        System.out.println(ex);
    }

    System.out.println("Number of objects created: "+CircleWithException .getNumberOfObjects());
}

, но вместо этого ошибки я получаю этот результат

"Количество созданных объектов: 3"

Кто-нибудь может мне помочь? Большое спасибо

1 Ответ

5 голосов
/ 25 февраля 2020

Ваш код написан правильно, однако похоже, что вы допустили ошибку в методе "setRadius (double newRadius)". Вы проверяете, является ли радиус меньше 0 (или> = 0), но так как он никогда не устанавливается в случае -5, вы не выбросите исключение.

Я полагаю, вы хотите проверить, если Вместо этого newRadius больше или меньше 0.

Таким образом, код будет таким (обратите внимание, как радиус изменяется на newRadius, поскольку это аргумент, который вы передаете в своем методе):

public void setRadius(double newRadius) throws IllegalArgumentException {
if(newRadius>=0) radius = newRadius;
else if(newRadius<0)
    throw new IllegalArgumentException("Radius cannot be negative"); }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...