001package com.hfg.math; 002 003 004import com.hfg.exception.InvalidValueException; 005 006//------------------------------------------------------------------------------ 007/** 008 Percent object bounded by 0 <= value >= 100. 009 010 @author J. Alex Taylor, hairyfatguy.com 011 */ 012//------------------------------------------------------------------------------ 013// com.hfg XML/HTML Coding Library 014// 015// This library is free software; you can redistribute it and/or 016// modify it under the terms of the GNU Lesser General Public 017// License as published by the Free Software Foundation; either 018// version 2.1 of the License, or (at your option) any later version. 019// 020// This library is distributed in the hope that it will be useful, 021// but WITHOUT ANY WARRANTY; without even the implied warranty of 022// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 023// Lesser General Public License for more details. 024// 025// You should have received a copy of the GNU Lesser General Public 026// License along with this library; if not, write to the Free Software 027// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 028// 029// J. Alex Taylor, President, Founder, CEO, COO, CFO, OOPS hairyfatguy.com 030// jataylor@hairyfatguy.com 031//------------------------------------------------------------------------------ 032 033public class Percent 034{ 035 private float mValue; 036 037 //########################################################################### 038 // CONSTRUCTORS 039 //########################################################################### 040 041 //-------------------------------------------------------------------------- 042 public Percent(float inValue) 043 { 044 setValue(inValue); 045 } 046 047 //-------------------------------------------------------------------------- 048 public Percent(double inValue) 049 { 050 setValue((float)inValue); 051 } 052 053 //-------------------------------------------------------------------------- 054 public Percent(int inValue) 055 { 056 setValue(inValue); 057 } 058 059 //########################################################################### 060 // PUBLIC METHODS 061 //########################################################################### 062 063 //-------------------------------------------------------------------------- 064 public int intValue() 065 { 066 return (int) mValue; 067 } 068 069 //-------------------------------------------------------------------------- 070 public float getValue() 071 { 072 return mValue; 073 } 074 075 //-------------------------------------------------------------------------- 076 @Override 077 public String toString() 078 { 079 return String.format("%.2f%%", mValue); 080 } 081 082 //########################################################################### 083 // PRIVATE METHODS 084 //########################################################################### 085 086 //-------------------------------------------------------------------------- 087 private void setValue(float inValue) 088 { 089 if (inValue < 0) 090 { 091 throw new InvalidValueException("The percent value cannot be less than 0!"); 092 } 093 else if (inValue > 100) 094 { 095 throw new InvalidValueException("The percent value cannot be greater than 100!"); 096 } 097 098 mValue = inValue; 099 } 100}