1 package org.djutils.base; 2 3 import java.util.Objects; 4 5 /** 6 * A simple version of a mutable double with get() and set(double) functions. 7 * <p> 8 * Copyright (c) 2023-2024 Delft University of Technology, Jaffalaan 5, 2628 BX Delft, the Netherlands. All rights reserved. See 9 * for project information <a href="https://djutils.org" target="_blank"> https://djutils.org</a>. The DJUTILS project is 10 * distributed under a three-clause BSD-style license, which can be found at 11 * <a href="https://djutils.org/docs/license.html" target="_blank"> https://djutils.org/docs/license.html</a>. 12 * </p> 13 * @author <a href="https://www.tudelft.nl/averbraeck">Alexander Verbraeck</a> 14 */ 15 public class MutableDouble 16 { 17 /** the current value of the mutable double. */ 18 private double value; 19 20 /** 21 * Initialize the mutable double with a value. 22 * @param value double; the initial value of the mutable double 23 */ 24 public MutableDouble(final double value) 25 { 26 set(value); 27 } 28 29 /** 30 * set the mutable double to a new value. 31 * @param newValue double; the new value of the mutable double 32 */ 33 public void set(final double newValue) 34 { 35 this.value = newValue; 36 } 37 38 /** 39 * @return double; the current value of the mutable double 40 */ 41 public double get() 42 { 43 return this.value; 44 } 45 46 /** 47 * Increment the modifiable double with a value. 48 * @param increment double; the value to increment the modifiable double with 49 */ 50 public void inc(final double increment) 51 { 52 this.value += increment; 53 } 54 55 /** 56 * Increment the modifiable double with 1. 57 */ 58 public void inc() 59 { 60 inc(1); 61 } 62 63 /** 64 * Decrement the modifiable double with a value. 65 * @param decrement double; the value to decrement the modifiable double with 66 */ 67 public void dec(final double decrement) 68 { 69 this.value -= decrement; 70 } 71 72 /** 73 * Decrement the modifiable double with 1. 74 */ 75 public void dec() 76 { 77 dec(1); 78 } 79 80 /** 81 * Increment the modifiable double with a value. 82 * @param multiplier double; the value to multiply the modifiable double with 83 */ 84 public void mul(final double multiplier) 85 { 86 this.value *= multiplier; 87 } 88 89 /** 90 * Divide the modifiable double by a value. 91 * @param divisor double; the value to divide the modifiable double by 92 */ 93 public void div(final double divisor) 94 { 95 this.value /= divisor; 96 } 97 98 @Override 99 public int hashCode() 100 { 101 return Objects.hash(this.value); 102 } 103 104 @Override 105 @SuppressWarnings("checkstyle:needbraces") 106 public boolean equals(final Object obj) 107 { 108 if (this == obj) 109 return true; 110 if (obj == null) 111 return false; 112 if (getClass() != obj.getClass()) 113 return false; 114 MutableDouble other = (MutableDouble) obj; 115 return this.value == other.value; 116 } 117 118 @Override 119 public String toString() 120 { 121 return "MutableDouble [value=" + this.value + "]"; 122 } 123 124 }