sahar mosleh california state university san marcospage 1 a for loop can contain multiple...
TRANSCRIPT
Sahar Mosleh California State University San Marcos Page 1
• A for loop can contain multiple initialization actions separated with commas
• Caution must be used when combining a declaration with multiple actions
• It is illegal to combine multiple type declarations with multiple actions, for example
• To avoid possible problems, it is best to declare all variables outside the for statement
• A for loop can contain multiple update actions, separated with commas, also
• It is even possible to eliminate the loop body in this way
• However, a for loop can contain only one Boolean expression to test for ending the loop
The Comma in for Statements
Sahar Mosleh California State University San Marcos Page 2
Infinite Loops
• A while, do-while, or for loop should be designed so that the value tested in the Boolean expression is changed in a way that eventually makes it false, and terminates the loop
• If the Boolean expression remains true, then the loop will run forever, resulting in an infinite loop
• Loops that check for equality or inequality (== or !=) are especially prone to this error and should be avoided if possible
Sahar Mosleh California State University San Marcos Page 3
Loop Bugs• The two most common kinds of loop errors are unintended infinite loops and
off-by-one errors
• An off-by-one error is when a loop repeats the loop body one too many or one too few times
• This usually results from a carelessly designed Boolean test expression
• Use of == in the controlling Boolean expression can lead to an infinite loop or an off-by-one error
• This sort of testing works only for characters and integers, and should never be used for floating-point
Sahar Mosleh California State University San Marcos Page 4
Example:
Number = 2;While (number !=12){system.out.println(number); //Ok since printing even numbers and number riches 12Number = number +2;}
----------------------------------------------------------------Number = 1;While (number !=12){ system.out.println(number); //Not Ok since printing odd numbers and number never riches 12Number = number +2;}
----------------------------------------------------------------------------Number = 2;While (number <12){ system.out.println(number); //Ok for odd and even numbersNumber = number +2;}
Sahar Mosleh California State University San Marcos Page 5
Local Variables
• A variable declared within a method definition is called a local variable
• All variables declared in the main method are local variables
• All method parameters are local variables
• If two methods each have a local variable of the same name, they are still two entirely different variables
Sahar Mosleh California State University San Marcos Page 6
Blocks
• A block is another name for a compound statement, that is, a set of Java statements enclosed in braces,{}.
• A variable declared within a block is local to that block, and cannot be used outside the block
• Once a variable has been declared within a block, its name cannot be used for anything else within the same method definition
Sahar Mosleh California State University San Marcos Page 7
Declaring Variables in a for Statement• You can declare one or more variables within the
initialization portion of a for statement
• A variable so declared will be local to the for loop, and cannot be used outside of the loop
• If you need to use such a variable outside of a loop, then declare it outside the loop
Sahar Mosleh California State University San Marcos Page 8
Assignment Compatibility
• In general, the value of one type cannot be stored in a variable of another type
• int intVariable = 2.99; //Illegal
• The above example results in a type mismatch because a double value cannot be stored in an int variable
• However, there are exceptions to this
• double doubleVariable = 2;
• For example, an int value can be stored in a double type
Sahar Mosleh California State University San Marcos Page 9
Assignment Compatibility• More generally, a value of any type in the following list can be assigned to
a variable of any type that appears to the right of it
• byteshortintlongfloatdouble• Char
• Note that as your move down the list from left to right, the range of allowed values for the types becomes larger
• An explicit type cast is required to assign a value of one type to a variable whose type appears to the left of it on the above list (e.g., double to int)
• Note that in Java an int cannot be assigned to a variable of type boolean, nor can a boolean be assigned to a variable of type int
Sahar Mosleh California State University San Marcos Page 10
Arithmetic Operators and Expressions
• As in most languages, expressions can be formed in Java using variables, constants, and arithmetic operators
• These operators are + (addition), - (subtraction), * (multiplication), / (division), and % (modulo, remainder)
• An expression can be used anyplace it is legal to use a value of the type produced by the expression
Sahar Mosleh California State University San Marcos Page 11
Arithmetic Operators and Expressions
• If an arithmetic operator is combined with int operands, then the resulting type is int
• If an arithmetic operator is combined with one or two double operands, then the resulting type is double
• If different types are combined in an expression, then the resulting type is the right-most type on the following list that is found within the expression
• byteshortintlongfloatdouble• Char
Sahar Mosleh California State University San Marcos Page 12
Integer and Floating-Point Division• When one or both operands are a floating-point type, division results in a
floating-point type
• 15.0/2 evaluates to 7.5
• When both operands are integer types, division results in an integer type
• Any fractional part is discarded • The number is not rounded
• 15/2 evaluates to 7
• Be careful to make at least one of the operands a floating-point type if the fractional portion is needed
Sahar Mosleh California State University San Marcos Page 13
The % Operator
• The % operator is used with operands of type int to recover the information lost after performing integer division
• 15/2 evaluates to the quotient 7• 15%2 evaluates to the remainder 1
• The % operator can be used to count by 2's, 3's, or any other number
• To count by twos, perform the operation number % 2, and when the result is 0, number is even
Sahar Mosleh California State University San Marcos Page 14
Type Casting• A type cast takes a value of one type and produces a value of another type
with an "equivalent" value
• If n and m are integers to be divided, and the fractional portion of the result must be preserved, at least one of the two must be type cast to a floating-point type before the division operation is performed
• double ans = n / (double)m;
• Note that the desired type is placed inside parentheses immediately in front of the variable to be cast
• Note also that the type and value of the variable to be cast does not change
Sahar Mosleh California State University San Marcos Page 15
More Details About Type Casting
• When type casting from a floating-point to an integer type, the number is truncated, not rounded
• (int)2.9 evaluates to 2, not 3
• When the value of an integer type is assigned to a variable of a floating-point type, Java performs an automatic type cast called a type coercion
• double d = 5;
• In contrast, it is illegal to place a double value into an int variable without an explicit type cast
• int i = 5.5; // Illegal• int i = (int)5.5 // Correct