user985668
user985668

Reputation:

Why do I get a DivideByZeroException in my Java code?

import java.io.IOException;
import java.util.*;

public class calling {
public static String s;
public static String t;
public static int y;
public static int x;

public static int num1() {
int x;
Scanner scanner = new Scanner (System.in);
System.out.println("Please enter a number called x: ");
x=scanner.nextInt();
return x;    
}

public static int num2() {
int y;
Scanner scanner = new Scanner (System.in);
System.out.println("Please enter a second number called y: ");
y=scanner.nextInt();
return y;    
}

public static void calculation() {
Scanner input = new Scanner(System.in);

System.out.println("What process would you like to do? *, /, + or - ?");
s=input.next();

if (s.equals("*")) {
System.out.println("\nThe product of these numbers is:" + (x*y));}
else 
if (s.equals("+")) {
System.out.println("\nThe sum of these numbers is: " + (x+y));}

System.out.println("\nDo you want x or y to be the dividor/subtractor?: ");
t=input.next();

if (t.equals("y") || t.equals("Y") ) {

if (s.equals("/")) {
System.out.println("\nThe quotient of these numbers is:  " + (x/y));}
else 
if (s.equals("-")) {
System.out.println("\nThe difference of these numbers is: " + (x-y));}}

else 
if (t.equals("x") || t.equals("X")){

if (s.equals("/")) {
System.out.println("\nThe quotient of these numbers is: " + (y/x));}
else 
if (s.equals("-")) {
System.out.println("\nThe difference of these numbers is: " + ((y-x)));}}
}

public static void  main (String [] args) throws IOException {


num1();
num2();
calculation();


}

}

i keep getting this error in what should be my final result which is simply the result of the calculations being performed

this is the error:" Exception in thread "main" java.lang.ArithmeticException: / by zero at calling.calculation(calling.java:44) at calling.main(calling.java:64)"

Upvotes: 2

Views: 529

Answers (2)

Joe
Joe

Reputation: 82604

You need to make sure that the:

int x;
int y;

are the ones you want. Integer's default to zero when static.

Upvotes: 0

Michael Petrotta
Michael Petrotta

Reputation: 60902

Since this is likely homework, I'll give you a hint to point you in the right direction.

When you run your program, you execute num1 and num2 to collect the values of x and y from the user. Within num2, y is declared as a local variable. What happens to that variable when num2 returns? And what does that imply for the class field (variable) y declared on line 7?

This is also a good time to learn how to use a debugger. Put a breakpoint on line 44, and see what the values of x and y are.

Upvotes: 2

Related Questions