2015-12-02 2 views
0

Я делаю проект для создания фильтров для фотографии, где мы устанавливаем новые значения RGB с помощью методов getter и setter.Java getter возвращает исходное значение вместо значения, обновленного установщиком

public class Color { 

private double red; 
private double green; 
private double blue; 

public Color() { 
this.setRed(1.0); 
this.setGreen(1.0); 
this.setBlue(1.0); 
} 

public Color(double red, double green, double blue) { 
this.setRed(red); 
this.setGreen(green); 
this.setBlue(blue); 
} 

... (code for other functions after those tests pass) 

public double getRed(){ 
    return red; 
} 

public void setRed(double color1){ 
    if (color1 <= 1.0){ 
     if (color1 >= 0.0){ 
      red = color1; 
     } 
    } 
    else if (color1>1.0){ 
     red=1.0; 
    } 
    else if (color1<0.0){ 
     red=0.0; 
    } 
} 

} 

Каждый из геттеров и сеттеров является дубликатом getRed/setRed. Я проверил определения с помощью программы я не имею доступа к, но это выход я получил:

Неудачные испытания:

Сценарий: 3,1 - после вызова setRed (-1,0), getRed () 'ы возвращаемое значение должно быть 0,0

Цвет (1.0,1.0,1.0) .setRed (-1,0) - ОК

Цвет (1.0,1.0,1.0) .getRed() - ожидаемый 0.0 - 1.0 возвращается

Итак, сеттер работает так, как мне это нужно, но геттер возвращает исходную стоимость е. Это не единичный случай, каждый из моих получателей возвращает исходное значение (1.0) для своих соответствующих цветов, в то время как каждый сеттер успешно работает.

+1

Создаете ли вы новый цвет каждый раз, когда вы запускаете геттер? – JCOC611

+0

Нет нового цвета для каждого тестового прогона. Мы используем тот же экземпляр Color для восточного тестового запуска set/get – jobosno

+0

Единая строка сеттера: 'this.red = color1 <0.0? 0.0: color1> 1.0? 1.0: color1; ' –

ответ

2

Ваше последнее условие else if (color1<0.0) { red=0.0; } никогда не будет true, потому что все случаи, когда color1 меньше 0 будут пойманы в первом случае заявление if (color1 <= 1.0). Следовательно, значение 0.0 никогда не будет установлено.

+0

Это, похоже, проблема. Изменение вложенности, если из plain, если if/else, похоже, сделал трюк. Большое спасибо. – jobosno

+0

@ jobosno Рад, что я мог бы помочь. Если это разрешит вашу проблему, вы можете принять мой ответ, щелкнув по знаку на левой стороне моего ответа. – ctomek

+0

Кажется, есть 15-минутный минимум, прежде чем вы сможете принять ответы. Я буду рад отметить это как таковое после истечения указанного срока. Еще раз спасибо! – jobosno