Showing posts with label Nan. Show all posts
Showing posts with label Nan. Show all posts

Wednesday, 14 January 2015

Division by Zero in Java

Java does not stop you dividing by zero but, if you try, it gives you a run-time error:
 
Java > cat prog81.java
public class prog81
{
public static void main (String args[])
  {
  int x = 1/0;
  System.out.println("x = " + x);
  }
}
Java > javac prog81.java
Java > java prog81
Exception in thread "main" java.lang.ArithmeticException: / by zero
        at prog81.main(prog81.java:5)
Java >
 
You can trap these errors and handle them tidily as shown below. This stops your program falling over:
 
Java > cat prog82.java
public class prog82
{
public static void main (String args[])
  {
  try
    {
    System.out.println("Dividing 1 by 0");
    int x = 1/0;
    System.out.println("x = " + x);
    }
  catch (ArithmeticException e)
    {
    System.out.println("Division by zero not allowed");
    }
  try
    {
    System.out.println("Dividing 1 by 1");
    int y = 1/1;
    System.out.println("y = " + y);
    }
  catch (ArithmeticException e)
    {
    System.out.println("Division by zero not allowed");
    }
  }
}
Java > javac prog82.java
Java > java prog82
Dividing 1 by 0
Division by zero not allowed
Dividing 1 by 1
y = 1
Java >
 
However, if you divide 1.0 by 0.0, the answer is infinity:
 
Java > cat prog83.java
public class prog83
{
public static void main (String args[])
  {
  double x = 1.0/0.0;
  System.out.println("x = " + x);
  }
}
Java > javac prog83.java
Java > java prog83
x = Infinity
Java >

... and, if you divide 0.0 by 0.0, the answer is NaN (not a number):

andrew@UBUNTU:~/Java$ cat prog84.java
public class prog84
{
public static void main (String args[])
  {
  double x = 0.0/0.0;
  System.out.println("x = " + x);
  }
}
andrew@UBUNTU:~/Java$ javac prog84.java
andrew@UBUNTU:~/Java$ java prog84
x = NaN
andrew@UBUNTU:~/Java$

Sunday, 2 March 2014

Command Line Parameters in Java (1)

You can pass parameters from the command line to a Java program as shown below. In the final example, a parameter of -1 is supplied. The square root of -1 is a complex number if I remember correctly. The answer given, NaN, stands for not a number:

andrew@UBUNTU:~/Java$ cat prog34.java
public class prog34
{
public static void main(String[] args)
  {
  double x = Double.parseDouble(args[0]);
  System.out.println
  ("The square root of " + x     
   + " is " + Math.pow(x,0.5));
  }
}
andrew@UBUNTU:~/Java$ javac prog34.java
andrew@UBUNTU:~/Java$ java prog34 4
The square root of 4.0 is 2.0
andrew@UBUNTU:~/Java$ java prog34 10
The square root of 10.0 is 3.1622776601683795
andrew@UBUNTU:~/Java$ java prog34 -1
The square root of -1.0 is NaN
andrew@UBUNTU:~/Java$