<< Chapter < Page Chapter >> Page >

Result is of the wider type

The type of the result is the same as the wider type; double in this case.

In this case...

Because the left operand of the multiplication operation in Listing 5 is type double , the int value is converted to type double and the arithmetic is performed as type double . This produces a result of type double , causing the floating value 4.294967294E9 to be displayed on the computer screen.

And the correct answer is...

C. 4.294967294E9

Signed modulus operations

What output is produced by the program in Listing 6 ?

  • A. Compiler Error
  • B. Runtime Error
  • C. 2
  • D. -2
Listing 6 . Signed modulus operations.
public class Modulus01{ public static void main(String args[]){ new Worker().doWork();}//end main() }//end class definition class Worker{public void doWork(){ int myVar01 = -11;int myVar02 = 3; System.out.println(myVar01%myVar02);}//end doWork() }//end class definition

What is a modulus operation?

In elementary terms, we like to say that the modulus operation returns the remainder that results from a divide operation. In general terms, that is true.

Some interesting behavior

However, the modulus operation has some interesting behaviors that are illustrated in this and the next several questions. This program returns the modulus of -11 and 3, with -11 being the left operand.

What is the algebraic sign of the result?

Here is a rule:

The result of the modulus operation takes the sign of the left operand, regardless of the sign of the quotient and regardless of the sign of the right operand.

In this program, that produced a result of -2. Changing the sign of the right operand would not have changed the sign of the result.

Exercise care using the sign of the modulus result

Thus, you may need to exercise care as to how you interpret the sign of the result when you perform a modulus operation having a negative left operand.

And the correct answer is...

D. -2

Modulus with zero divisor

What output is produced by the program shown in Listing 7?

  • A. Compiler Error
  • B. Runtime Error
  • C. 2
  • D. 11
Listing 7 . Modulus with zero divisor.
public class Modulus02{ public static void main(String args[]){ new Worker().doWork();}//end main() }//end class definitionclass Worker{ public void doWork(){int myVar01 = -11; int myVar02 = 0;System.out.println(myVar01%myVar02); }//end doWork()}//end class definition

Integer modulus involves integer divide

The modulus operation with integer operands involves an integer divide. Therefore, it is subject to the same kind of problem as an ordinary integer divide when the right operand has a value of zero.

Program produces a runtime error

In this case, the program produced the runtime error shown in Figure 3 , which terminated the program.

Dealing with the problem

As with integer divide, you can either test the right operand for a zero value before performing the modulus operation, or you can deal with the problem after the fact using try-catch.

And the answer is...

The code in Listing 7 produces the runtime error shown in Figure 3 .

Figure 3 . Runtime error.
Exception in thread "main" java.lang.ArithmeticException: / by zero at Worker.doWork(Modulus02.java:13)at Modulus02.main(Modulus02.java:5)

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Ap computer science a, clarification of the java subset. OpenStax CNX. Oct 03, 2015 Download for free at https://legacy.cnx.org/content/col11279/1.5
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Ap computer science a, clarification of the java subset' conversation and receive update notifications?

Ask