Solved

not able to get the  validation correct

Posted on 2014-10-11
3
59 Views
Last Modified: 2014-10-24
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

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;
	    }

	}
		
		
	

Open in new window

0
Comment
Question by:roy_sanu
3 Comments
 
LVL 26

Expert Comment

by:dpearson
ID: 40375311
Whoa, that's a lot of code.

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.

		SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
			Calendar cal = Calendar.getInstance() ;
			String time = "14:10:20";
			cal.setTime(format.parse(time)) ;

			int hours = cal.get(Calendar.HOUR_OF_DAY) ;
			int min = cal.get(Calendar.MINUTE) ;
			int sec = cal.get(Calendar.SECOND) ;
			System.out.println(hours + ":" + min + ":" + sec) ;

Open in new window

0
 
LVL 21

Accepted Solution

by:
Amitkumar Panchal earned 500 total points
ID: 40375333
24:00:00 is a valid clock but not beyond 24:00:00 when HH is 24, MM and SS should be 00

Open in new window


Does it mean 00:00:00 and 24:00:00 are same ? I believe range should be from 00:00:00 to 23:59:59.

And as mentioned by dpearson, 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.

Refer http://www.mkyong.com/java/how-to-check-if-date-is-valid-in-java/ to get an idea how to achieve the objective.
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 40375590
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
0

Featured Post

Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
eclipse shortcuts 9 55
print map entry 34 69
type mismatch (Object[] to double[] 4 24
Error in @AspectJ Based AOP with Spring 2 13
This was posted to the Netbeans forum a Feb, 2010 and I also sent it to Verisign. Who didn't help much in my struggles to get my application signed. ------------------------- Start The idea here is to target your cell phones with the correct…
Basic understanding on "OO- Object Orientation" is needed for designing a logical solution to solve a problem. Basic OOAD is a prerequisite for a coder to ensure that they follow the basic design of OO. This would help developers to understand the b…
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
Viewers will learn about the regular for loop in Java and how to use it. Definition: Break the for loop down into 3 parts: Syntax when using for loops: Example using a for loop:

773 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question