<< 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
What output is produced by the program in Listing 6 ?
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
What output is produced by the program shown in Listing 7?
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) |
Notification Switch
Would you like to follow the 'Ap computer science a, clarification of the java subset' conversation and receive update notifications?