Chapter 3 decision structures
This presentation is the property of its rightful owner.
Sponsored Links
1 / 99

Chapter 3 Decision Structures PowerPoint PPT Presentation


  • 93 Views
  • Uploaded on
  • Presentation posted in: General

Chapter 3 Decision Structures. Contents. The if Statement The if-else Statement The if-else-if Statement Nested if Statement Logical Operators Comparing String Objects More about Variable Declaration and Scope. Contents (Cont’d). The Conditional Operators

Download Presentation

Chapter 3 Decision Structures

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Chapter 3 decision structures

Chapter 3Decision Structures


Contents

Contents

  • The if Statement

  • The if-else Statement

  • The if-else-if Statement

  • Nested if Statement

  • Logical Operators

  • Comparing String Objects

  • More about Variable Declaration and Scope


Contents cont d

Contents (Cont’d)

  • The Conditional Operators

  • The Switch Statement

  • Creating Objects with the DecimalFormat Class

  • The printf Method


1 the if statement

1. The if Statement

  • Problem:

    • Write a program to calculate user’s average of 3 test scores. If the average is greater than 95, the program congratulates the users on obtaining a high score.


1 the if statement cont d

1. The if Statement (Cont’d)


1 the if statement cont d1

1. The if Statement (Cont’d)


1 the if statement cont d2

1. The if Statement (Cont’d)

  • Simple decision structure logic


1 the if statement cont d3

1. The if Statement (Cont’d)

if(BooleanExpression)

statement;

  • The BooleanExpression must be a boolean expression

    • A boolean expression is either true or false

  • If the BooleanExpression is true, the very next statement is executed. Otherwise, it is skipped.

  • The statement is conditionally executed because it only executes under the condition that the expression in the parentheses is true.


Using relational operators to form conditions

Using Relational Operators to Form Conditions

  • Typically, the boolean expression is formed with a relational operator (binary operator.


Using relational operators to form conditions cont d

Using Relational Operators to Form Conditions (Cont’d)

  • Assuming that a is 4, b is 6, and c is 4

    • b>=atrue

    • c<=a true

    • a>=5 false

    • c==6false

    • b!=6false


Programming style and the if statement

Programming Style and the if Statement

  • Two important style rules

    • The conditionally executed statement should appear on the line after the if statement.

    • The conditionally executed statement should be indented on level from the if statement.

      if(value>32)

      System.out.println(“Invalid number”);

      if(value>32) System.out.println(“Invalid number”);


Be careful with semicolons

Be Careful with Semicolons

No semicolon here

if(BooleanExpression)

statement;

int x = 0, y = 10;

if(x > y);

System.out.println(x +

“is greater than “ + y);

Semicolon goes here

It will always execute.


Multiple conditionally executed statements

Multiple Conditionally Executed Statements

  • Enclosing a group of statements by braces

    if(sales > 5000)

    {

    bonus = 500.0;

    commissionRate = 0.12;

    dayOff += 1;

    }

These three statements are executed if sales is greater than 5000


Comparing characters

Comparing Characters

  • Using the relational operators to test character data as well as number

  • Assuming ch is a char variable:

    • Compare ch to the character ‘A’:

      if(ch==‘A’)

      System.out.println(“The letter is A.”);

    • Compare the ch is not equal to ‘A’:

      if(ch!=‘A’)

      System.out.println(“Not the letter is A.”);


Comparing characters cont d

Comparing Characters (Cont’d)

  • In Unicode, letters are arranged in alphabetic order:

    • ‘A’ comes before ‘B’, the numeric code of ‘A’ (65) is less than the code of ‘B’ (66).

    • ‘A’ < ‘B’ true

  • In Unicode, the uppercase letters come before the lowercase letter.


2 the if else statement

2. The if-else statement

  • Problem

    • Write a program to get two numbers and divide the first number by the second number.


2 the if else statement1

2. The if-else statement


2 the if else statement2

2. The if-else statement


Logic of the if else statement

Logic of the if-else Statement


Logic of the if else statement cont d

Logic of the if-else Statement (Cont’d)

  • The if-else statement will execute one group of statement if its boolean expression is true, or another group if its boolean expression is false.

    if(BooleanExpression)

    statement or block

    else

    statement or block


3 the if else if statement

3. The if-else-if Statement

  • Problem

    • Write a program to ask the user to enter a numeric test score. Display a letter grade (A, B, C, D, or F) for the score.

      • score < 60 F

      • 60 <= score < 70 D

      • 70 <= score < 80 C

      • 80 <= score < 90 B

      • 90 <= score <= 100 A

      • score > 100Invalid score


Logic of the if else if statement

Logic of the if-else-if Statement

Logic of the if-else-if Statement


3 the if else if statement1

3. The if-else-if Statement

  • The if-else-if statement is a chain of if-else statements. Each statement in the chain performs its test until one of the tests is found to be true.

    if(BooleanExpression)

    statement or block

    else if(BooleanExpression)

    statement or block

    //

    //Put as many else if statement as needed here

    //

    else

    statement or block


4 nested if statement

4. Nested if Statement

  • Problem

    • Write a Java program to determine whether a bank customer qualifies for a loan. To qualify, a customer must earn at least $30,000 per year, and must have been on his or her current job for at least two years.


4 nested if statement1

4. Nested if Statement

  • Input

    • User’s annual salary

    • Number of years at the current job


4 nested if statement cont d

4. Nested if Statement (Cont’d)

  • An if statement appears inside another if statement, it is considered nested.

  • The rule for matching else clauses with if clauses is this:

    • An else clause goes with the closet previous if clause that doesn’t already have its own else clause.


Alignment of if and else clauses

Alignment of if and else clauses


5 logical operators

5. Logical Operators

  • Logical operators connect two or more relational expressions into one or reverse the logic of an expression.

  • Java provides

    • two binary logical operators

      • && : AND

      • ||: OR

    • one unary logical operator

      • !: NOT


5 logical operators cont d

5. Logical Operators (Cont’d)


5 logical operators cont d1

5. Logical Operators (Cont’d)


The operator

The && Operator

  • The && performs short-circuit evaluation

    • If the expression on the left side of the && operator is false, the expression on the right side will not be checked.


The operator cont d

The && Operator (Cont’d)

  • A different version of the LoanQualifier program


The operator1

The || Operator

  • The || performs short-circuit evaluation

    • If the expression on the left side of the || operator is true, the expression on the right side will not be checked.


The operator2

The || Operator

  • Problem

    • Write a Java program to determine whether a bank customer qualifies for a loan. To qualify, a customer must earn at least $30,000 per year, OR must have been on his or her current job for at least two years.


The operator cont d1

The || Operator (Cont’d)

  • Input

    • User’s annual salary

    • Number of years at the current job


A better solution

A Better Solution


The operator3

The ! Operator

  • The ! Operator performs a logical NOT operation

  • !(x > 1000)x <= 1000


The precedence and associativity of logical operators

The Precedence and Associativity of Logical Operators

  • The logical operators have orders of precedence and associativity.

  • The precedence of the logical operators, from highest to lowest

    !

    &&

    ||

  • !(x > 2)

    • Applies the ! operator to the expression x > 2

  • !x > 2

    • Causes a compiler error


The precedence and associativity of logical operators cont d

The Precedence and Associativity of Logical Operators (Cont’d)

  • The && and || operators rank lower in precedence than the relational operators

    (a > b) && (x < y)a > b && x < y

    (x == y) || (b > a) x == y || b > a

  • The logical operators evaluate their expression from left to right

    • a < b || y == z

      • a < b is evaluated before y == z

    • a < b || y == z && m > j

      • y == z is evaluated first because the && operator has higher precedence than ||

      • Is equivalent to the following

        (a < b) || ((y == z) && (m > j))


The precedence and associativity of logical operators cont d1

The Precedence and Associativity of Logical Operators (Cont’d)


Checking numeric ranges with logical operators

Checking Numeric Ranges with Logical Operators

  • Determining whether a numeric value is within a specific range of values

    • Using the && operator

      x >= 20 && x <= 40

  • Determining whether a numeric value is outside a specific range of values

    • Using the || operator

      x < 20 || x > 40


6 comparing string objects

6. Comparing String Objects

  • We cannot use relational operators to compare String objects. Instead we must use a String method.

    String name1 = “Marks”;

    String name2 = “Mary”;

  • name1 == name2 will be false because the variables name1 and name2 reference different objects.


6 comparing string objects1

6. Comparing String Objects

if(name1 == name2)


6 comparing string objects2

6. Comparing String Objects

  • To compare the contents of two String objects correctly using the method equals of String class

    if(name1.equal(name2))

    • The equals method returns true if they are the same, or false if they are not the same.


6 comparing string objects3

6. Comparing String Objects

  • Comparing String objects to string literals

    • Pass the string literal as the argument to the equals method

      if(name1.equals(“Mark”))


6 comparing string objects4

6. Comparing String Objects

  • The compareTo method of the String class

    • To determine whether one string is greater than, equal to, or less than another string.

      StringReference.compareTo(OtherString)

      • StringReference is a variable that references a String object, OtherString is either another variable that references a String object or a string literal.


6 comparing string objects5

6. Comparing String Objects

  • If the method’s return value

    • < 0 : the string referenced by StringReference is less than the OtherString argument

    • 0 : The two strings are equal.

    • > 0 : the string referenced by StringReference is greater than the OtherString argument


6 comparing string objects6

6. Comparing String Objects


6 comparing string objects7

6. Comparing String Objects

  • String comparison of “Mary” and “Mark”

    • The character ‘y’ is greater than ‘k’, so “Mary” is greater than “Mark”.


Ignore case in string comparisons

Ignore Case in String Comparisons

  • The equals and compareTo methods perform case sensitive comparisons. In other words, “A” is not the same as “a”.

  • The String class provides the equalsIgnoreCase and compareToIgnoreCase methods

    • The case of characters in strings is ignored.


7 more about variable declaration and scope

7. More about Variable Declaration and Scope

  • The scope of a variable is limited to the block in which it is declared.

  • It is a common practice to declare all of a method’s local variables at the beginning of the method, it is possible to declare them at later points.

    • Sometimes programmers declare certain variables near the part of the program where they are used in order to make their purpose more evident.


7 more about variable declaration and scope1

7. More about Variable Declaration and Scope

  • A local variable’s scope always

    • starts at the variable’s declaration

    • ends at the closing brace of the block of code in which it is declared.


7 more about variable declaration and scope2

7. More about Variable Declaration and Scope


The conditional operator

The Conditional Operator

  • The conditional operator (a ternary operator) is used to create short expressions that work like if-else statements.

    Expression1 ? Expression2 : Expression3

  • Exprerssion1 is a boolean expression. If Expression1 is true, then Expression2 is executed. Otherwise Expression3 is executed.


The conditional operator cont d

The Conditional Operator (Cont’d)

x < 0 ? y = 10 : z = 20;

if(x < 0)

y = 10;

else

z = 20;


The conditional operator cont d1

The Conditional Operator (Cont’d)

  • We can put parentheses around the subexpressions in a conditional expression

    (x < 0) ? (y = 10) : (z = 20);


Using the value of a conditional expression

Using the Value of a Conditional Expression

  • The conditional expression also returns a value.

  • If Expression1 is true, the value of the conditional expression is the value of Expression2. Otherwise it is the value of Expression3.

    number = x > 100 ? 20 : 50;


Using the value of a conditional expression cont d

Using the Value of a Conditional Expression (Cont’d)

number = x > 100 ? 20 : 50;

if(x > 100)

number = 20;

else

number = 50;


Using the value of a conditional expression cont d1

Using the Value of a Conditional Expression (Cont’d)

System.out.println(“Your grade is: “ +

(score < 60 ? “Fail” : “Pass”));

if(score < 60)

Systym.out.println(“Your grade is: Fail.“);

else

Systym.out.println(“Your grade is: Pass.“);


7 the switch statement

7. The switch Statement

  • The switch statement lets the value of a variable or expression determine where the program will branch to.

  • The if-else-if statement allows the program to branch into one of several possible paths. It tests a series of boolean expressions, and branches if one of those expression is true.


7 the switch statement cont d

7. The switch Statement (Cont’d)

  • The switch statement tests the value of an integer or character expression and then uses that value to determine which set of statements to branch to.


7 the switch statement cont d1

7. The switch Statement (Cont’d)

switch(SwitchExpression)

{

case CaseExpression1:

// place one or more statements here

break;

case CaseExpression2:

// place one or more statements here

break;

// case statements may be repeated as many

// times as necessary

default:

// place one or more statements here

}


7 the switch statement cont d2

7. The switch Statement (Cont’d)

  • The SwitchExpression is an expression that must result in a value of one of these types: char, byte, short, or int.

  • The CaseExpression is a literal or a final variable which must be of the char, byte, short, orinttypes.

  • The CaseExpressions of each case statement must be unique.

  • The default section is optional. If we leave it out, the program will have nowhere to branch to if the SwitchExpression doesn’t match any of CaseExpressions.


7 the switch statement cont d3

7. The switch Statement (Cont’d)

if(SwitchExpression== CaseExpression1)

// place statement here

else if(SwitchExpression== CaseExpression2)

// place statement here

// else if statements may be repeated

// as many times as necessary

else

// place statement here


7 the switch statement cont d4

7. The switch Statement (Cont’d)


7 the switch statement cont d5

7. The switch Statement (Cont’d)

  • The case statements show where to start executing in the block and the break statements show the program where to stop.

  • Without break statements, the program would execute all of the lines from the matching case statement to the end of the block.

  • The default section (or the last case section if there is no default) does not need a break statement.


Without break statement

Without break Statement

  • Without break statement, the program falls through all the statements below the one with the matching case expression.


Without break statement1

Without break Statement


Without break statement2

Without break Statement !

  • Write a program that asks the user to select a grade of pet food. The available choices are A, B, and C. The program will recognize either uppercase or lowercase letters.


Without break statement3

Without break Statement


10 creating objects with the decimalformat class

10. Creating Objects with the DecimalFormat class

  • DecimalFormat class can be used to format the appearance of floating-point numbers rounded to a specified number of decimal places.

  • In Java, a value of the double type can be displayed with as many as 15 decimal places, and a value of float type can be displayed with up to 6 decimal places.


10 creating objects with the decimalformat class cont d

10. Creating Objects with the DecimalFormat class (Cont’d)

double number;

number = 10.0/6;

System.out.println(number);

1.666666666666667

  • How to control the number of decimal places that are displayed ?


10 creating objects with the decimalformat class cont d1

10. Creating Objects with the DecimalFormat class (Cont’d)

  • Using the DecimalFormatclass

    • import java.text.DecimalFormat;

    • Create an object of the DecimalFormatclass

      DecimalFormat formatter;

      formatter = new DecimalFormat(“#0.00”);

  • Constructor

    • Is automatically executed

    • To initialize the object’s attributes with appropriate data and perform any necessary setup operations.

format pattern

constructor


10 creating objects with the decimalformat class cont d2

10. Creating Objects with the DecimalFormat class (Cont’d)

  • #: specifies that a digit should be displayed if it is present. If there is no digit in this position, no digit should be displayed.

  • 0: specifies that a digit should be displayed in this position if it is present. If there is no digit in this position, a 0 should be displayed.


Chapter 3 decision structures

“#0.00”


000 00

“000.00”


Chapter 3 decision structures

“#,##0.00”


Chapter 3 decision structures

“#0%”

  • Formatting numbers as percentages

    • Writing the % character at the last position in the format pattern. This causes a number to be multiplied by 100, and the % character is appended to its end.


Chapter 3 decision structures

“#0%”


The printf method

The printf Method

  • The System.out.printfmethod allows you to format output in a variety of ways.

    System.out.printf(FormatString, ArgumentList)

is a list of zero or more additional arguments.

contains text and/or special formatting specifiers.


Format specifiers

Format Specifiers

  • %d : For a decimal integer

    int hours = 40;

    System.out.printf(“I worked %d hours this week.\n”, hours);

    I worked 40 hours this week.

    int dogs = 2;

    int cats = 4;

    System.out.printf(“We have %d dogs and %d cats.\n”, dogs, cats);

    We have 4 dogs and 2 cats.


Format specifiers1

Format Specifiers

  • %nd : the number should be printed in a field that is n places wide.

    intnunber = 9;

    System.out.printf(“The value is %6d.\n”, number);

    The value is 9.

    • If the field is wider than the specified width, the field width will be expanded to accommodate the value.

      intnunber = 97654;

      System.out.printf(“The value is %2d.\n”, number);

      The value is97654.


Format specifiers2

Format Specifiers

  • %f : to print a floating-point number

    double nunber = 1278.92;

    System.out.printf(“The value is %f.\n”, number);

    The value is 1279.920000.

    double nunber = 1278.92;

    System.out.printf(“The value is %18f.\n”, number);

    The value is 1279.920000;

    double nunber = 1278.92714;

    System.out.printf(“The value is %8.2f.\n”, number);

    The value is 1278.93.


Format specifiers3

Format Specifiers

double nunber = 1253874.92714;

System.out.printf(“The value is %,.2f.\n”, number);

The value is 1,253,874.93.

  • %s : To print a string argument

    String name = “Ringo”;

    System.out.printf(“My name is %s.\n”, name);

    My name is Ringo.

    String name = “Ringo”;

    System.out.printf(“My name is %10s.\n”, name);

    My name is Ringo.


  • Login