roy_sanu
asked on
not able to get the validation correct
Hi
i need some help on resolving this program
My input should be HH:MM:SS
HH should be between 00 and 24
MM should be between 00 to 59
SS should be between 00 to 59
24:00:00 is a valid clock but not beyond 24:00:00 when HH is 24, MM and SS should be 00
Invalid inputs are listed below
-------------------------
nulll and empty input string
wrong delimiter such as 00|00|23,
should not accept AA:BB:CC
negative value -01:29:-04 should not accept
Pls find the program it is not validating that
i need some help on resolving this program
My input should be HH:MM:SS
HH should be between 00 and 24
MM should be between 00 to 59
SS should be between 00 to 59
24:00:00 is a valid clock but not beyond 24:00:00 when HH is 24, MM and SS should be 00
Invalid inputs are listed below
-------------------------
nulll and empty input string
wrong delimiter such as 00|00|23,
should not accept AA:BB:CC
negative value -01:29:-04 should not accept
Pls find the program it is not validating that
import java.util.ArrayList;
import java.util.List;
public class Berlinclass {
public String[] convertToBerlinTime(String time) {
List<Integer> parts = new ArrayList<Integer>();
for (String part : time.split(":")) {
parts.add(Integer.parseInt(part));
}
return new String[] {
getSeconds(parts.get(2)),
getTopHours(parts.get(0)),
getBottomHours(parts.get(0)),
getTopMinutes(parts.get(1)),
getBottomMinutes(parts.get(1))
};
}
protected String getSeconds(int number) {
if (number % 2 == 0) return "Y";
else return "O";
}
protected String getTopHours(int number) {
return getOnOff(4, getTopNumberOfOnSigns(number));
}
protected String getBottomHours(int number) {
return getOnOff(4, number % 5);
}
protected String getTopMinutes(int number) {
return getOnOff(11, getTopNumberOfOnSigns(number), "Y").replaceAll("YYY", "YYR");
}
protected String getBottomMinutes(int number) {
return getOnOff(4, number % 5, "Y");
}
// Default value for onSign would be useful
private String getOnOff(int lamps, int onSigns) {
return getOnOff(lamps, onSigns, "R");
}
private String getOnOff(int lamps, int onSigns, String onSign) {
String out = "";
// String multiplication would be useful
for (int i = 0; i < onSigns; i++) {
out += onSign;
}
for (int i = 0; i < (lamps - onSigns); i++) {
out += "O";
}
return out;
}
private int getTopNumberOfOnSigns(int number) {
return (number - (number % 5)) / 5;
}
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
you will need to use SimpleDateFormat. It will throw an exception if the input is not as per the specified format or invalid. You dont need to reinvent the wheel again.I agree, but you need to know that it IS possible to get invalid data past it unless you call setLenient(false) on the DateFormat
You should check out "SimpleDateFormat" - it's designed to do exactly what you're trying to do by hand. It'll throw a ParseException if the inputs are invalid.
Open in new window