I have the attribute:
private int Number;
I want to limit this number so that it can only be between the values 1 - 3.
Would I do this within a method when I set the value or is there a way of predefining that I only want values 1 - 3 to be valid values for this integer?
Many thanks in advance.
Edit:
I want to take an input of a number between 1 -3.
I've tried using a while, do and for loop each of which I can't get to work without getting stuck in an infinite loop.
Here's some example code:
private int Number;
public void setNumber(int aNumber) {
int count = 1;
while (count !=0) {
if ((aNumber < 1) || (aNumber > 3)) {
System.out.println("Value is out of range 1-3");
System.out.println("Please try again");
break;
}
else {
this.Number = aNumber;
count = 0;
}
}
}
The only way you could achieve that is by definig your own class for the number you want to limit. But, based on my experience, it looks like to me that what you are looking for is not an integer with a limited range of values, but is actually an enum.
No, but you can use Range from Google Guava
Unfortunately java.lang.Integer is final, so you cannot extend it. You can always implement class
LimitedInteger
and implement this logic there.But It sounds like what you really need is
enum
supported by Java language since version 1.5.An Integer (int) does not have any constraints by itself, the only one are the minimum and maximum values bounded by the cardinality of a 32bit set. The method you are talking about is called an accessors. An accessor is a method which is used to set and get a value. This way you can validate, format or preprocess any value prior to assign them. You can easily code your accessor the following way:
Unlike some languages (e.g. Ada), Java does not have a way to "predeclare" the acceptable range of a number. However, if you encapsulate the
anumber
into a class, you can enforce such a restriction using a setter method: