Showing posts with label not a number. Show all posts
Showing posts with label not a number. 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$