Interview Questions

Java - IP address (IPv4) format check

/**
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

import java.util.StringTokenizer;

/**
 * This class verifies the format of the IP address as per Internet Protocol version 4 (IPv4)
 */

public class IpFormatCheck
{
        public static void main(String args[])
        {
                String ipAddress = "110.111.112.113";

                if (!IpFormatCheck.checkIpFormat(ipAddress))
                {
                        System.out.println("InCorrect");
                }
                else
                {
                        System.out.println("Correct");
                }
        }

        // true = success && false = fail
        public static boolean checkIpFormat(String ipAddress)
        {
                char[] arr = ipAddress.toCharArray();
                int charCount = 0;
                for (int i = 0; i < arr.length; i++)
                {
                        if (arr[i] == '.')
                        {
                                charCount++;
                        }
                }

                if (charCount != 3)
                {
                        System.out.println("Wrong Number of Octets");
                        return false;
                }

                StringTokenizer tok = new StringTokenizer(ipAddress, ".", false);
                int count = 0;
                while (tok.hasMoreTokens())
                {
                        count++;
                        String temp = tok.nextToken().toString();

                        try
                        {
                                int value = Integer.parseInt(temp);
                                if (value < 0 || value > 254)
                                {
                                        return false;
                                }
                        }
                        catch (Exception e)
                        {
                                return false;
                        }
                }
                return true;
        }
}