Class methods and how they are called

 

Methods

 

Calling a class method

class-name.method-name(arguments)

If the method is defined within the current class, the class name may be omitted and the general syntax for the call expression is:

method-name(arguments)

Example 1:  Calling the skip() method of my Utility class to skip a single line on the screen. The method requires no parameters and returns no value so is called using the stand-alone statement

Utility.skip();

The parenthesis are required by the compiler and must be coded even though no parameters are being passed.

Example 2:  Calling the separator() method of my Utility class to draw a line consisting of a particular character on the screen. The method requires two parameters. The first is an integer indicating the length of a line of characters to be drawn. The second parameter specifies the character to be used in drawing the line. The method returns no value so is called using a stand-alone statement such as

Utility.separator(40, '$');

which will draw a line consisting of 40 dollar signs. 

Example 3:  Calling the moneyFormat() method of my Utility class to convert a numeric value into a formatted currency string having correct punctuation. The method requires a single parameter of type double that represents the value to be formatted. It returns the formatted string. Because it returns a value, it is called within another expression such as

System.out.println("Balance: " + Utility.moneyFormat(4567.89));

which will convert the double literal 4567.89 into the string "$4,567.89", append it to the string "Balance: ", and pass the resulting string to the println() method of System.out for display on the console. Such nesting of calls is sometimes referred to as "cascading" and is one of the most powerful features of Java.

In these examples, literals were used as parameters. In most real programs, a variable or an expression that evaluates to the appropriate data type for the parameter is used.

 

A sample program

The following program processes multiple line items for an order. It uses several class methods of my Utility and Keyboard classes:

public class App {
  public static void main(String[] args) {

    // Variables.

    int quantity;
    double price;
    double extendedPrice;
    int lineItems = 0;
    double totalDue = 0;
    char again = 'y';

    // Main loop to process one line item.

    while (again == 'Y' || again =='y') {

      // Prompt for and read quantity and price.

      Utility.separator(40, '=');
      System.out.print("Quantity: ");
      quantity = Keyboard.readInt();
      System.out.print("Price: ");
      price = Keyboard.readDouble();
      Utility.skip();

      // If the data is invalid, display an error message. Otherwise,
      // calculate and display the extended price, add to the total due
      // for the entire order, and increment the number of line items.

      if (quantity <= 0 || price < 0) {
        System.out.println("\tInvalid data");
      }
      else {
        extendedPrice = quantity * price;
        System.out.println("\tExtended price: " +
          Utility.moneyFormat(extendedPrice));
        totalDue += extendedPrice;
        lineItems++;
      }

      // Ask the user if they want to do it again and repeat the loop as
      // requested.

      Utility.separator(40, '=');
      System.out.print("Again? (Y/N): ");
      again = Keyboard.readChar();
    }

    // Display the order summary.

    Utility.separator(40, '=');
    System.out.println("\tLine items: " + lineItems);
    System.out.println("\tTotal due: " + Utility.moneyFormat(totalDue));
    Utility.separator(40, '=');
    System.out.println("\tEND");
  }
}

Note: For more details, refer to the documentation for my Keyboard class and my Utility class.

 

Looking ahead

Knowing how to call class methods is an important part of Java programming. Future lessons will introduce some useful class methods within the Math class of Java's packaged code. You will also learn how to define your own custom class methods.

 

Lab exercise for Ferris students

E-mail your answers to this assignment no later than the due date listed in the class schedule.

 

Review questions

  1. Assume that someMethod is a class method of a class named SomeClass that requires no parameters and returns no value. Which one of the following statements would be valid for calling someMethod from a class named MyClass?

  1. someMethod;

  2. someMethod();

  3. SomeClass.someMethod;

  4. SomeClass.someMethod();

  5. none of the above

  1. Assume that getValue is a class method of a class named Calculate that requires no parameters and returns an integer value. Which of the following statements would be valid for calling getValue from a different class?  (choose three)

  1. int x = Calculate.getValue(3);

  2. int x = Calculate.getValue();

  3. System.out.println("Value: " + (5 * Calculate.getValue()));

  4. Calculate.getValue();

  5. double y = getValue();

  1. Assuming all unseen code is correct and using the methods of my Keyboard and Utility classes, what will happen when an attempt is made to compile and execute the following statements?

System.out.print("Enter an integer: ");
System.out.println("You entered: " + Keyboard.readInt());

  1. the first statement will not compile

  2. the second statement will not compile

  3. the statements will compile but an error will occur at run time when the second statement is executed

  4. the statements will compile and run. If the user enters the integer 7, the message "You entered: 7" will be displayed on the console.

  5. the statements will compile and run. If the user enters the integer 7, the message "You entered: " will be displayed on the console.

  1. Assuming all unseen code is correct and using the methods of my Keyboard and Utility classes, what will happen when an attempt is made to compile and execute the following statements? Note that the line numbers are for reference purposes only.

1
2
3
4
Utility.separator('^', 50);
System.out.print("Enter interest rate as .nnn: ");
float rate = Keyboard.readFloat();
System.out.println("You entered: " + Utility.percentFormat(rate, 1));
  1. a compile error will occur at line 1

  2. a compile error will occur at line 3

  3. a compile error will occur at line 4

  4. the statements will compile and run. Assuming that the user enters 5.7 in response to the prompt, the following will appear on the console:

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Enter interest rate as .nnn: .057
You entered: 5.7%

  1. the statements will compile and run. Assuming that the user enters 5.7 in response to the prompt, the following will appear on the console:

    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    Enter interest rate as .nnn: .057
    You entered: 6%