Question

I'm having some trouble with the my cartesian slope calculations in Java. So my sourcecode lets you input 4 numbers, x1 y1 x2 y2, which represent 2 coordinates of 2 points in an cartesian coordinate system.

then i calculate the slope by calculating deltaX and deltaY. so i use a double for the slope end calculation (deltaY / deltaX) in case you get a tenth of a number.

then i use an IF function to say: if slope = 0 --> println("not a linear line"). else calculate the cross point of the X and Y polars and println the result

So here is the problem: what if the slope is 0 (example x1:0 y1:1 x2:0 y2:9) then the i get an error: Exception in thread main java.lang.ArithmeticException: / by zero


here is the full script:

import java.io.*;

public class Cartesian
{
    public static int leesIn(String var, BufferedReader in) throws IOException
    {
        System.out.println("type een getal in die " + var + " moet voorstellen.");
        return Integer.parseInt(in.readLine());
    }
    public static void main(String[] args) throws IOException
    {


    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

    int x1, x2, y1, y2;
    x1 = leesIn("X1", in);
    y1 = leesIn("Y1", in);
    x2 = leesIn("X2", in);
    y2 = leesIn("Y2", in);

    System.out.println("The Coördinates of point 1 is: (" + x1 + ", " + y1 + "). The Coördinates of point 2 is: (" + x2 + ", " + y2 + ").");


    int deltaY = y2 - y1;
    int deltaX = x2 - x1;
    double RC = deltaY / deltaX;

    if ((RC) == 0)
    {
        System.out.println("The slope is 0, no linear line.");
    }else
    {
        System.out.println("The slope is: " + RC);
        double B = y1-(RC*x1);
        System.out.println("The crosspoint with Y, if x is 0, : " + B);
    }
}
}

anyone an idea how to fix my problem? tnx in advance!

Was it helpful?

Solution

You should move calculation into area where you are sure that it can be calculated (in your case double RC = deltaY / deltaX;

So your code will be:

int deltaY = y2 - y1;
int deltaX = x2 - x1;

if (deltaY == 0)
{
    System.out.println("The slope is 0, no linear line.");
}else if (deltaX == 0)
{
    System.out.println("Not a Linear Line");
}else
{
    double RC = (double) deltaY / deltaX;
    System.out.println("The slope is: " + RC);
    double B = y1-(RC*x1);
    System.out.println("The crosspoint with Y, if x is 0, : " + B);
}

OTHER TIPS

Make a try catch block

double RC;
try{
  RC = deltaY / deltaX;

}

catch(ArithmeticException ex){
System.out.println("Not a Linear Line");

}

try this

try {

  double RC = deltaY / deltaX;

  if ((RC) == 0)
  {
    System.out.println("The slope is 0, no linear line.");
  }else
  {
    System.out.println("The slope is: " + RC);
    double B = y1-(RC*x1);
    System.out.println("The crosspoint with Y, if x is 0, : " + B);
  }
} catch(ArithmeticException ae) {
    System.out.println("Not a linear line");
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top