Building Java Programs Chapter 4 Lecture 4-1: Scanner ; cumulative algorithms reading: 3.3 – 3.4, 4.2.

Slides:



Advertisements
Similar presentations
BUILDING JAVA PROGRAMS CHAPTER 6.4 FILE OUTPUT. 22 PrintStream : An object in the java.io package that lets you print output to a destination such as.
Advertisements

Copyright 2010 by Pearson Education Building Java Programs Chapter 4 Lecture 4-2: Advanced if/else ; Cumulative sum reading: 4.1, 4.3, 4.5; "Procedural.
1 BUILDING JAVA PROGRAMS CHAPTER 4 CONDITIONAL EXECUTION.
Copyright 2008 by Pearson Education Building Java Programs Chapter 3: Parameters, Return, and Interactive Programs Lecture 3-3: Interactive Programs w/
Copyright 2008 by Pearson Education Building Java Programs Chapter 4 Lecture 4-1: Scanner ; if/else reading: , 4.2, 4.6.
Copyright 2008 by Pearson Education Building Java Programs Chapter 3 Lecture 3-3: Interactive Programs w/ Scanner reading: self-check: #16-19.
Copyright 2006 by Pearson Education 1 Building Java Programs Chapter 3: Parameters, Return, and Interactive Programs with Scanner.
Copyright 2008 by Pearson Education Building Java Programs Chapter 3 Lecture 3-3: Interactive Programs w/ Scanner reading: self-check: #16-19.
1 CSE 142 Lecture Notes Interactive Programs with Scanner Chapter 4 Suggested reading: Suggested self-checks: Section 4.10 #1-4 These lecture.
1 Scanner objects. 2 Interactive programs We have written programs that print console output. It is also possible to read input from the console.  The.
Topic 11 Scanner object, conditional execution Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from
Building Java Programs Chapter 4 Conditional Execution Copyright (c) Pearson All rights reserved.
Building Java Programs Chapter 4 Conditional Execution Copyright (c) Pearson All rights reserved.
Conditionals (Cont’d). 2 Nested if/else question Formula for body mass index (BMI): Write a program that produces output like the following: This program.
Topic 12 more if/else, cumulative algorithms, printf Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from
Building Java Programs Chapter 4 Conditional Execution.
Objects and Classes; Strings. 2 Classes and objects class: A program entity that represents either 1.A program / module, or 2.A type of objects* –A class.
1 Building Java Programs Chapter 5 Lecture 5-1: while Loops, Fencepost Loops, and Sentinel Loops; Procedural Design reading: 5.1 – 5.2; 4.5.
1 while loops. 2 Definite loops definite loop: A loop that executes a known number of times.  The for loops we have seen so far are definite loops. We.
Interactive Programs with Scanner. 2 Input and System.in interactive program: Reads input from the console. –While the program runs, it asks the user.
FUNDAMENTALS 2 CHAPTER 2. OPERATORS  Operators are special symbols used for:  mathematical functions  assignment statements  logical comparisons 
CHAPTER 5 GC 101 Input & Output 1. INTERACTIVE PROGRAMS  We have written programs that print console output, but it is also possible to read input from.
Cumulative algorithms. 2 Adding many numbers How would you find the sum of all integers from ? // This may require a lot of typing int sum = 1 +
Copyright 2010 by Pearson Education Building Java Programs Scanner ; if / else; while loops ; random reading: 3.3 – 3.4, 4.1, 4.5, 5.1, 5.6.
1 Building Java Programs Chapter 3: Introduction to Parameters and Objects These lecture notes are copyright (C) Marty Stepp and Stuart Reges, They.
1 BUILDING JAVA PROGRAMS CHAPTER 5 PROGRAM LOGIC AND INDEFINITE LOOPS.
Copyright 2008 by Pearson Education Building Java Programs Chapter 3 Lecture 3-3: Interactive Programs w/ Scanner reading: self-check: #16-19.
Copyright 2006 by Pearson Education 1 Building Java Programs Chapter 3: Parameters, Return, and Interactive Programs with Scanner.
Copyright 2010 by Pearson Education The if/else statement reading: 4.1, 4.6.
Building Java Programs
Building Java Programs
CSCI 161 – Introduction to Programming I William Killian
Conditional Execution
Lecture 7: Input and Miscellaneous
Conditional Execution
Building Java Programs Chapter 4
Building Java Programs
Building Java Programs
CSc 110, Autumn 2016 Lecture 12: Advanced if/else; Cumulative sum
Topic 11 Scanner object, conditional execution
Building Java Programs
Building Java Programs
Building Java Programs Chapter 4
CSc 110, Spring 2017 Lecture 9: Advanced if/else; Cumulative sum
Building Java Programs
Scanner objects Readings: 3.4.
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Scanner objects Readings: 3.4.
Using Objects (continued)
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Scanner objects Readings: 3.4.
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Chapter 4 Lecture 4-1: Scanner; if/else reading: 3.3 – 3.4, 4.1, 4.5
Building Java Programs
Building Java Programs
Optional Topic: User Input with Scanner
Presentation transcript:

Building Java Programs Chapter 4 Lecture 4-1: Scanner ; cumulative algorithms reading: 3.3 – 3.4, 4.2

Interactive Programs with Scanner reading:

3 Interactive programs So far, we have only written programs that print console output. It is also possible to read input from the console. The user types the input into the console. The program uses the input to do something. Such a program is called an interactive program. Reading input allows us to create more interesting behavior Also allows the user to have some control over the program

4 Interactive programs Interactive programs can be challenging. Computers and users think in very different ways. Users tend to “misbehave”.

5 Scanner Scanner : An object that can read input from many sources. Communicates with System.in Can also read from files (Ch. 6), web sites, databases, etc… The Scanner class is found in the java.util package. import java.util.*; // so you can use Scanner Constructing a Scanner object to read console input: Scanner = new Scanner(System.in); Example: Scanner console = new Scanner(System.in);

6 Scanner methods Each method waits until the user presses Enter. The value typed by the user is returned. System.out.print("How old are you? "); // prompt int age = console.nextInt(); System.out.println("You typed " + age); prompt: A message telling the user what input to type. MethodDescription nextInt() reads an int from the user and returns it nextDouble() reads a double from the user next() reads a one-word String from the user nextLine() reads a one-line String from the user

7 Scanner example import java.util.*; // so that I can use Scanner public class UserInputExample { public static void main(String[] args) { Scanner console = new Scanner(System.in); System.out.print("How old are you? "); int age = console.nextInt(); int years = 65 - age; System.out.println(years + " years until retirement!"); } } Console (user input underlined): How old are you? 53 years until retirement! 12 age12 years53

8 Scanner example 2 import java.util.*; // so that I can use Scanner public class ScannerMultiply { public static void main(String[] args) { Scanner console = new Scanner(System.in); System.out.print("Please type two numbers: "); int num1 = console.nextInt(); int num2 = console.nextInt(); int product = num1 * num2; System.out.println("The product is " + product); } } Output (user input underlined): Please type two numbers: 8 6 The product is 48 The Scanner can read multiple values from one line.

9 Input tokens token: A unit of user input, as read by the Scanner. Tokens are separated by whitespace (spaces, tabs, new lines). How many tokens appear on the following line of input? 23 John Smith 42.0 "Hello world" $2.50 " 19" When a token is not the type you ask for, the program crashes. System.out.print("What is your age? "); int age = console.nextInt(); Output: What is your age? Timmy java.util.InputMismatchException at java.util.Scanner.next(Unknown Source) at java.util.Scanner.nextInt(Unknown Source)...

10 Scanner BMI question A person's body mass index (BMI) is defined to be: Write a program that produces the following output: This program reads in data for two people and computes their body mass index (BMI) and weight status. Enter next person's information: height (in inches)? 62.5 weight (in pounds)? Enter next person's information: height (in inches)? 58.5 weight (in pounds)? 90 Person #1 body mass index = Person #2 body mass index = Difference =

11 Scanners as parameters If many methods need to read input, declare a Scanner in main and pass it to the other methods as a parameter. public static void main(String[] args) { Scanner console = new Scanner(System.in); int sum = readSum3(console); double average = sum / 3.0; System.out.println("The average is " + average); } // Prompts for 3 numbers and returns their sum. public static int readSum3(Scanner console) { System.out.print("Type 3 numbers: "); int num1 = console.nextInt(); int num2 = console.nextInt(); int num3 = console.nextInt(); return num1 + num2 + num3; }

12 Scanner BMI solution // This program computes two people's body mass index (BMI) // and compares them. The code uses parameters and returns. import java.util.*; // so that I can use Scanner public class BMI { public static void main(String[] args) { introduction(); Scanner console = new Scanner(System.in); double bmi1 = processPerson(console); double bmi2 = processPerson(console); // report overall results System.out.println("Person #1 body mass index = " + bmi1); System.out.println("Person #2 body mass index = " + bmi2); System.out.println("Difference = " + Math.abs(bmi1 - bmi2)); } // prints a welcome message explaining the program public static void introduction() { System.out.println("This program reads in data for two people"); System.out.println("and computes their body mass index (BMI)"); System.out.println("and weight status."); System.out.println(); }...

13 Scanner BMI solution, cont.... // reads information for one person, computes their BMI, and returns it public static double processPerson(Scanner console) { System.out.println("Enter next person's information:"); System.out.print("height (in inches)? "); double height = console.nextDouble(); System.out.print("weight (in pounds)? "); double weight = console.nextDouble(); System.out.println(); double bmi = getBMI(height, weight); return bmi; } // Computes a person's body mass index based on their height and weight // and returns the BMI as its result. public static double getBMI(double height, double weight) { return weight * 703 / (height * height); }

14 Program puzzle Consider a program to average three numbers Type 3 numbers: The average is 9.0 public class Average { public static void main(String[] args) { Scanner console = new Scanner(System.in); int sum = readSum3(console); double average = sum / 3.0 System.out.println("The average is " + average); } public static int readSum3(Scanner console) { System.out.print("Type 3 numbers: "); int num1 = console.nextInt(); int num2 = console.nextInt(); int num3 = console.nextInt(); return num1 + num2 + num3; } }

15 Program puzzle Consider changing the output to include the minimum value: Type 3 numbers: The average is 9.0 The minimum value is 6 How would we change the previous program? public static void main(String[] args) { Scanner console = new Scanner(System.in); int sum = readSum3(console); double average = sum / 3.0 System.out.println("The average is " + average); // What goes here? } public static int readSum3(Scanner console) { System.out.print("Type 3 numbers: "); int num1 = console.nextInt(); int num2 = console.nextInt(); int num3 = console.nextInt(); return num1 + num2 + num3; }

16 Can’t return multiple values! import java.util.*; // so that I can use Scanner public class Average { public static void main(String[] args) { Scanner console = new Scanner(System.in); System.out.print("Type 3 numbers: "); int num1 = console.nextInt(); int num2 = console.nextInt(); int num3 = console.nextInt(); double average = (num1 + num2 + num3) / 3.0; System.out.println("The average is " + average); System.out.println("The minimum value is " + Math.min(num1, Math.min(num2, num3))); }

Cumulative algorithms reading: 4.2

18 Adding many numbers How would you find the sum of all integers from 1-5? int sum = ; System.out.println("The sum is " + sum); What if we want the sum from 1 - 1,000?

19 Attempt at cumulative sum What is wrong with the following code? for (int i = 1; i <= 1000; i++) { int sum = 0; sum += i; } System.out.println("The sum is " + sum);

20 Cumulative sum loop int sum = 0; for (int i = 1; i <= 1000; i++) { sum += i; } System.out.println("The sum is " + sum); cumulative sum: A variable that keeps a sum in progress and is updated repeatedly until summing is finished. The sum in the above code represents a cumulative sum. Cumulative sum variables must be declared outside the loops that update them, so that they will still exist after the loop.

21 Cumulative product This cumulative idea can be used with other operators: int product = 1; for (int i = 1; i <= 20; i++) { product = product * 2; } System.out.println("2 ^ 20 = " + product); How would we make the base and exponent adjustable?

22 Scanner and cumulative sum We can do a cumulative sum of user input: Scanner console = new Scanner(System.in); int sum = 0; for (int i = 1; i <= 100; i++) { System.out.print("Type a number: "); sum = sum + console.nextInt(); } System.out.println("The sum is " + sum);

23 Cumulative sum question Modify the Receipt program from Ch. 2. Prompt for how many people, and each person's dinner cost. Use static methods to structure the solution. Example log of execution: How many people ate? 4 Person #1: How much did your dinner cost? Person #2: How much did your dinner cost? 15 Person #3: How much did your dinner cost? 30.0 Person #4: How much did your dinner cost? Subtotal: $75.0 Tax: $6.0 Tip: $11.25 Total: $92.25

24 Cumulative sum answer // This program enhances our Receipt program using a cumulative sum. import java.util.*; public class Receipt2 { public static void main(String[] args) { Scanner console = new Scanner(System.in); double subtotal = meals(console); results(subtotal); } // Prompts for number of people and returns total meal subtotal. public static double meals(Scanner console) { System.out.print("How many people ate? "); int people = console.nextInt(); double subtotal = 0.0; // cumulative sum for (int i = 1; i <= people; i++) { System.out.print("Person #" + i + ": How much did your dinner cost? "); double personCost = console.nextDouble(); subtotal = subtotal + personCost; // add to sum } return subtotal; }...

25 Cumulative answer, cont'd.... // Calculates total owed, assuming 8% tax and 15% tip public static void results(double subtotal) { double tax = subtotal *.08; double tip = subtotal *.15; double total = subtotal + tax + tip; System.out.println("Subtotal: $" + subtotal); System.out.println("Tax: $" + tax); System.out.println("Tip: $" + tip); System.out.println("Total: $" + total); }