2015-08-10 2 views
1

У меня есть простая программа, которая считывает параметры аргумента и выводит их в результате.Как бороться с пустым аргументом в Java?

, например, если я использую:

Rectangle r1 = new Rectangle(1.0, 2.0, "RED", false); 
System.out.println(r1); 

должен вернуться:

1.0 x 2.0, color: RED 

Но что, если я вошел в следующий аргумент:

Rectangle r8 = new Rectangle(); 
System.out.println(r8); 

Как может мой выход программировать следующий результат по умолчанию при использовании вышеуказанного аргумента?

1.0 x 1.0, filled with RED 

Вот часть моего кода:

public class Rectangle extends Shape { 

    protected double width; 
    protected double length; 

    public Rectangle() { 
     super(); 
    } 

    public Rectangle(double width, double length) { 
     super(); 
     this.width = width; 
     this.length = length; 
    } 

    public Rectangle(double width, double length, String color, boolean filled) { 
     super(color, filled); 
     this.width = width; 
     this.length = length; 
    } 

    public double getWidth() { 
     return width; 
    } 

    public void setWidth(double width) { 
     this.width = width; 
    } 

    public double getLength() { 
     return length; 
    } 

    public void setLength(double length) { 
     this.length = length; 
    } 

    public double getArea() { 
     return (width * length); 
    } 

    public double getPerimeter() { 
     return (2 * (width + length)); 
    } 

    public String toString() { 
     if (super.isFilled()) { 
     return width + " x " + length + ", " + "filled with RED"; 
     } else { 
     return width + " x " + length + ", " + "color: RED"; 
     } 
    } 
} 

Я пытался использовать, если (ширина = 0) {} для ширины, но так как это примитивный тип, так он не работает .. .может ли кто-нибудь сказать мне, как я могу распечатать значение по умолчанию, если используется пустой аргумент? помощь будет оценена ... Спасибо!

+0

'если (ширина == 0) {' - сравнение, а не назначение. –

+0

Нет такой вещи, как «пустой» аргумент. –

ответ

12

Вы можете установить значения по умолчанию в конструкторе без параметров:

public Rectangle() { 
    super("RED", true); 
    this.width = 1.0; 
    this.length = 1.0; 
} 

Или вы можете присвоить значения по умолчанию в объявлении членов:

protected double width = 1.0; 
protected double length = 1.0; 

и имеют аналогичное заявление со значением по умолчанию для членов Shape.

Или вы можете вызвать другой конструктор из конструкторы без параметров, как это было предложено Seelenvirtuose:

public Rectangle() { 
    this(1.0, 1.0, "RED", true); 
} 
+8

Лучше: 'public Rectangle() {this (1.0, 1.0," RED ", true); } ' – Seelenvirtuose

+0

@Seelenvirtuose Это еще один хороший вариант – Eran

+0

Спасибо! Я буду помнить об этом! – Phantom

1

Вы всегда должны установить значение в конструкторе для свойств объекта. В вашем случае вы можете определить конструктор по умолчанию, чтобы вспомнить один с параметрами и передавая ему значения по умолчанию:

public Rectangle() { 
    this(1.0, 1.0, "RED", true); 
} 
0

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

public Rectangle() { 
    this(1.0,1.0,"RED",true); 
} 

public Rectangle(double width, double length) { 
    this.width = width; 
    this.length = length; 
} 
0

Вы можете определить значения по умолчанию в конструкторе

public class Rectangle extends Shape { 

    private final double DEFAULT_WIDTH=1.0; 
    private final double DEFAULT_LENGTH=1.0; 
    private final String DEFAULT_COLOUR="RED"; 
    private final boolean DEFAULT_FILLED=true; 

    protected double width; 
    protected double length; 

    public Rectangle() { 
     this(DEFAULT_WIDTH, DEFAULT_LENGTH, DEFAULT_COLOUR, DEFAULT_FILLED); 
    } 

    public Rectangle(double width, double length) { 
     super(); 
     this.width = width; 
     this.length = length; 
    } 

    public Rectangle(double width, double length, String color, boolean filled) { 
     super(color, filled); 
     this.width = width; 
     this.length = length; 
    } 

    public double getWidth() { 
     return width; 
    } 

    public void setWidth(double width) { 
     this.width = width; 
    } 

    public double getLength() { 
     return length; 
    } 

    public void setLength(double length) { 
     this.length = length; 
    } 

    public double getArea() { 
     return (width * length); 
    } 

    public double getPerimeter() { 
     return (2 * (width + length)); 
    } 

    public String toString() { 
     if (super.isFilled()) { 
     return width + " x " + length + ", " + "filled with RED"; 
     } else { 
     return width + " x " + length + ", " + "color: RED"; 
     } 
    } 
} 
Смежные вопросы