sahar mosleh california state university san marcospage 1 a for loop can contain multiple...

15
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

Upload: rosamond-blair

Post on 29-Jan-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sahar Mosleh California State University San MarcosPage 1 A for loop can contain multiple initialization actions separated with commas Caution must be

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

Page 2: Sahar Mosleh California State University San MarcosPage 1 A for loop can contain multiple initialization actions separated with commas Caution must be

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

Page 3: Sahar Mosleh California State University San MarcosPage 1 A for loop can contain multiple initialization actions separated with commas Caution must be

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

Page 4: Sahar Mosleh California State University San MarcosPage 1 A for loop can contain multiple initialization actions separated with commas Caution must be

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;}

Page 5: Sahar Mosleh California State University San MarcosPage 1 A for loop can contain multiple initialization actions separated with commas Caution must be

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

Page 6: Sahar Mosleh California State University San MarcosPage 1 A for loop can contain multiple initialization actions separated with commas Caution must be

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

Page 7: Sahar Mosleh California State University San MarcosPage 1 A for loop can contain multiple initialization actions separated with commas Caution must be

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

Page 8: Sahar Mosleh California State University San MarcosPage 1 A for loop can contain multiple initialization actions separated with commas Caution must be

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

Page 9: Sahar Mosleh California State University San MarcosPage 1 A for loop can contain multiple initialization actions separated with commas Caution must be

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

Page 10: Sahar Mosleh California State University San MarcosPage 1 A for loop can contain multiple initialization actions separated with commas Caution must be

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

Page 11: Sahar Mosleh California State University San MarcosPage 1 A for loop can contain multiple initialization actions separated with commas Caution must be

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

Page 12: Sahar Mosleh California State University San MarcosPage 1 A for loop can contain multiple initialization actions separated with commas Caution must be

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

Page 13: Sahar Mosleh California State University San MarcosPage 1 A for loop can contain multiple initialization actions separated with commas Caution must be

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

Page 14: Sahar Mosleh California State University San MarcosPage 1 A for loop can contain multiple initialization actions separated with commas Caution must be

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

Page 15: Sahar Mosleh California State University San MarcosPage 1 A for loop can contain multiple initialization actions separated with commas Caution must be

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