arrays - part 1 My methods are really methods of working and thinking; this is why they have crept in everywhere anonymously. Emmy Noether, Ph.D.

Similar documents
Topic 21 arrays - part 1

Building Java Programs

AP Computer Science. Arrays. Copyright 2010 by Pearson Education

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

Arrays. Weather Problem Array Declaration Accessing Elements Arrays and for Loops Array length field Quick Array Initialization Array Traversals

Building Java Programs Chapter 7

Lecture 9: Arrays. Building Java Programs: A Back to Basics Approach by Stuart Reges and Marty Stepp. Copyright (c) Pearson All rights reserved.

CSE 143 Lecture 1. Arrays (review) slides created by Marty Stepp

Array basics. Readings: 7.1

Array basics. How would you solve this? Arrays. What makes the problem hard? Array auto-initialization. Array declaration. Readings: 7.

CSc 110, Autumn 2016 Lecture 15: lists. Adapted from slides by Marty Stepp and Stuart Reges

CS 106A, Lecture 16 Arrays

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

CS 112 Introduction to Programming

Topic 12 more if/else, cumulative algorithms, printf

Lecture 10: Arrays II

Advanced if/else & Cumulative Sum

Admin. CS 112 Introduction to Programming. Recap: Exceptions. Summary: for loop. Recap: CaesarFile using Loop. Summary: Flow Control Statements

Topic 11 Scanner object, conditional execution

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

Topic 12 more if/else, cumulative algorithms, printf

Arrays Chris Piech CS106A, Stanford University

Topic 11 Scanner object, conditional execution

Topic 22 arrays - part 2. Copyright Pearson Education, 2010 Based on slides by Marty Stepp and Stuart Reges from

CSE 143 Lecture 2. reading:

Building Java Programs

Arrays: An array is a data structure that stores a sequence of values of the same type. The data type can be any of Java s primitive types:

"42 million of anything is a lot." -Doug Burger (commenting on the number of transistors in the Pentium IV processor)

Arrays Chris Piech CS106A, Stanford University

CSE 373. Data Types and Manipulation; Arrays. slides created by Marty Stepp

Computer Science is...

Arrays. CSE 142, Summer 2002 Computer Programming 1.

Building Java Programs Chapter 13

-Alfred North Whitehead. Copyright Pearson Education, 2010 Based on slides by Marty Stepp and Stuart Reges from

! definite loop: A loop that executes a known number of times. " The for loops we have seen so far are definite loops. ! We often use language like

Lab Assignment Three

Topic 4 Expressions and variables

Building Java Programs

Last Class. Introduction to arrays Array indices Initializer lists Making an array when you don't know how many values are in it

Review pages for the AP CS Exam

CS5000: Foundations of Programming. Mingon Kang, PhD Computer Science, Kennesaw State University

Building Java Programs

Topic 6 loops, figures, constants

Topic 14 while loops and loop patterns

CS 231 Data Structures and Algorithms, Fall 2016

Chapter 7: Arrays and the ArrayList Class

Wentworth Institute of Technology. Engineering & Technology WIT COMP1000. Arrays

Motivation of Loops. Loops. The for Loop (1) Learning Outcomes

Loops. EECS1022: Programming for Mobile Computing Winter 2018 CHEN-WEI WANG

Topic 13 procedural design and Strings

1. An operation in which an overall value is computed incrementally, often using a loop.

Searching and Sorting (Savitch, Chapter 7.4)

Chapter 4: Control Structures I

CIS November 14, 2017

CIS 1068 Netflix Challenge New assignment posted soon Lab grades November 14, 2017

M105: Introduction to Programming with Java Midterm Examination (MTA) Makeup Spring 2013 / 2014

4CCS1PRP, Programming Practice 2012 Lecture 6: Arrays - Part 1

Array. Prepared By - Rifat Shahriyar

What is an algorithm?

Arrays and Lists Review CSC 123 Fall 2018 Howard Rosenthal

Arrays and Lists CSC 121 Fall 2016 Howard Rosenthal

Lecture 2: Operations and Data Types

Building Java Programs

Module 7: Arrays (Single Dimensional)

Software Practice 1 - Basic Grammar Basic Syntax Data Type Loop Control Making Decision

Selec%on and Decision Structures in Java: If Statements and Switch Statements CSC 121 Fall 2016 Howard Rosenthal

Last Class. While loops Infinite loops Loop counters Iterations

CONTENTS: Array Usage Multi-Dimensional Arrays Reference Types. COMP-202 Unit 6: Arrays

Building Java Programs

Chapter 2: Basic Elements of Java

AP Computer Science. Return values, Math, and double. Copyright 2010 by Pearson Education

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

Lecture 15: Algorithms. AP Computer Science Principles

1 Short Answer (10 Points Each)

Jump Statements. The keyword break and continue are often used in repetition structures to provide additional controls.

Arrays. Eng. Mohammed Abdualal

Jump Statements. The keyword break and continue are often used in repetition structures to provide additional controls.

Garfield AP CS. User Input, If/Else. Most slides from Building Java Programs. Thanks, Stuart Regesand Marty Stepp!

Building Java Programs

COMP 250: Java Programming I. Carlos G. Oliver, Jérôme Waldispühl January 17-18, 2018 Slides adapted from M. Blanchette

Topic 23 arrays - part 3 (tallying, text processing)

COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand

Example: Computing prime numbers

Java Programming: Guided Learning with Early Objects Chapter 5 Control Structures II: Repetition

Building Java Programs

COMP-202 Unit 4: Programming With Iterations. CONTENTS: The while and for statements

Lecture 6: While Loops and the Math Class

Conditional Execution

CS/IT 114 Introduction to Java, Part 1 FALL 2016 CLASS 19: NOV. 15TH INSTRUCTOR: JIAYIN WANG

Review Chapters 1 to 4. Instructor: Scott Kristjanson CMPT 125/125 SFU Burnaby, Fall 2013

CS 101 Spring 2007 Midterm 2 Name: ID:

Building Java Programs. Chapter 2: Primitive Data and Definite Loops

Java Coding 3. Over & over again!

Arrays. Here is the generic syntax for an array declaration: type[] <var_name>; Here's an example: int[] numbers;

Method OverLoading printf method Arrays Declaring and Using Arrays Arrays of Objects Array as Parameters

Full file at

CS 101 Exam 2 Spring Id Name

Midterm Examination (MTA)

Last Class. More on loops break continue A bit on arrays

Returns & if/else. Parameters and Objects

Transcription:

Topic 21 https://commons.wikimedia.org/w/index.php?curid=66702 arrays - part 1 My methods are really methods of working and thinking; this is why they have crept in everywhere anonymously. Emmy Noether, Ph.D. Mathematician & physicist whose work laid foundation for quantum gravity https://www.sciencenews.org/article/emmy-noether-theorem-legacy-physics-math Copyright Pearson Education, 2010 Based on slides by Marty Stepp and Stuart Reges from http://www.buildingjavaprograms.com/

Can we solve this problem? How did we write the following program? How many days' temperatures? 7 Day 1's high temp: 45 Day 2's high temp: 44 Day 3's high temp: 39 Day 4's high temp: 48 Day 5's high temp: 37 Day 6's high temp: 46 Day 7's high temp: 53 Average temp = 44.6 4 days were above average.

Can we solve this problem? How did we write the following program? How many days' temperatures? 7 Day 1's high temp: 45 Day 2's high temp: 44 Day 3's high temp: 39 Day 4's high temp: 48 Day 5's high temp: 37 Day 6's high temp: 46 Day 7's high temp: 53 Average temp = 44.6 4 days were above average.

Can we solve this problem? Consider the following program: How many days' temperatures? 7 Day 1's high temp: 45 Day 2's high temp: 44 Day 3's high temp: 39 Day 4's high temp: 48 Day 5's high temp: 37 Day 6's high temp: 46 Day 7's high temp: 53 Average temp = 44.6 4 days were above average.

Why the problem is hard We need each input value twice: to compute the average (a cumulative sum) to count how many were above average We could read each value into a variable... but we: don't know how many days are needed until the program runs don't know how many variables to declare We need a way to declare many variables in one step.

Arrays array: object that stores many values of the same type. element: One value in an array. index: A 0-based integer to access an element from an array. index 0 1 2 3 4 5 6 7 8 9 value 12 49-2 26 5 17-6 84 72 3 element 0 element 4 element 9

Array declaration <type>[] <name> = new <type>[<length>]; Example: int[] numbers = new int[10]; index 0 1 2 3 4 5 6 7 8 9 value 0 0 0 0 0 0 0 0 0 0

Array declaration, cont. The length can be any non-negative integer expression. int x = 2 * 3 + 1; int[] data = new int[x % 5 + 2]; Each element initially gets a "zero-equivalent" value. Type int 0 double 0.0 boolean String or other object false Default value null (means, "no object")

Accessing elements <name>[<index>] // access <name>[<index>] = <value>; // modify Example: numbers[0] = 27; numbers[3] = -6; System.out.println(numbers[0]); if (numbers[3] < 0) { System.out.println("Element 3 is negative."); index 0 1 2 3 4 5 6 7 8 9 value 27 0 0 0-6 0 0 0 0 0 0 0

Arrays of other types double[] results = new double[5]; results[2] = 3.4; results[4] = -0.5; index 0 1 2 3 4 value 0.0 0.0 3.4 0.0-0.5 boolean[] tests = new boolean[6]; tests[3] = true; index 0 1 2 3 4 5 value false false false true false false

Out-of-bounds Legal indexes: between 0 and the array's length - 1. Reading or writing any index outside this range will throw an ArrayIndexOutOfBoundsException. Example: int[] data = new int[10]; System.out.println(data[0]); System.out.println(data[9]); System.out.println(data[-1]); System.out.println(data[10]); // okay // okay // exception // exception index 0 1 2 3 4 5 6 7 8 9 value 0 0 0 0 0 0 0 0 0 0

Accessing array elements int[] numbers = new int[8]; numbers[1] = 3; numbers[4] = 99; numbers[6] = 2; int x = numbers[1]; numbers[x] = 42; numbers[numbers[6]] = 11; // use numbers[6] as index x 3 index 0 1 2 3 4 5 6 7 numbers value 0 3 11 42 99 0 2 0

clicker Question What is output by the following code? String[] names = new String[5]; names[1] = "Olivia"; names[3] = "Isabelle"; System.out.print(names[0].length()); A. no output due to null pointer exception B. no output due to array index out of bounds exception C. no output due to a compile error (code can't run) D. 0 E. 6

Arrays and for loops It is common to use for loops to access array elements. for (int i = 0; i < 8; i++) { System.out.print(numbers[i] + " "); System.out.println(); // output: 0 3 11 42 99 0 2 0 Sometimes we assign each element a value in a loop. for (int i = 0; i < 8; i++) { numbers[i] = 2 * i; index 0 1 2 3 4 5 6 7 value 0 2 4 6 8 10 12 14

An array's length field stores its number of elements. <name>.length The length field for (int i = 0; i < numbers.length; i++) { System.out.print(numbers[i] + " "); // output: 0 2 4 6 8 10 12 14 It does not use parentheses like a String's.length(). What expressions refer to: The last element of any array? The middle element?

Weather question Use an array to solve the weather problem: How many days' temperatures? 7 Day 1's high temp: 45 Day 2's high temp: 44 Day 3's high temp: 39 Day 4's high temp: 48 Day 5's high temp: 37 Day 6's high temp: 46 Day 7's high temp: 53 Average temp = 44.6 4 days were above average.

Weather answer // Reads temperatures from the user, computes average and # days above average. import java.util.*; public class Weather { public static void main(string[] args) { Scanner console = new Scanner(System.in); System.out.print("How many days' temperatures? "); int days = console.nextint(); int[] temps = new int[days]; int sum = 0; // array to store days' temperatures for (int i = 0; i < days; i++) { // read/store each day's temperature System.out.print("Day " + (i + 1) + "'s high temp: "); temps[i] = console.nextint(); sum += temps[i]; double average = (double) sum / days; int count = 0; for (int i = 0; i < days; i++) { if (temps[i] > average) { count++; // report results System.out.printf("Average temp = %.1f\n", average); System.out.println(count + " days above average"); // see if each day is above average

Quick array initialization <type>[] <name> = {<value>, <value>, <value>; Example: int[] numbers = {12, 49, -2, 26, 5, 17, -6; index 0 1 2 3 4 5 6 value 12 49-2 26 5 17-6 Useful when you know what the array's elements will be The compiler determines the length by counting the values

"Array mystery" problem traversal: An examination of each element of an array. What element values are stored in the following array? int[] a = {1, 7, 5, 6, 4, 14, 11; for (int i = 0; i < a.length - 1; i++) { if (a[i] > a[i + 1]) { a[i + 1] = a[i + 1] * 2; index 0 1 2 3 4 5 6 value 1 7 10 12 8 14 22

Limitations of arrays You cannot resize an existing array: int[] a = new int[4]; a.length = 10; // error You cannot compare arrays with == or equals: int[] a1 = {42, -7, 1, 15; int[] a2 = {42, -7, 1, 15; if (a1 == a2) {... if (a1.equals(a2)) {... // false! // false! An array does not know how to print itself: int[] a1 = {42, -7, 1, 15; System.out.println(a1); // [I@98f8c4]

The Arrays class Class Arrays in package java.util has useful static methods for manipulating arrays: Method name binarysearch(<array>, <value>) copyof(<array>, <length>) equals(<array1>, <array2>) fill(<array>, <value>) sort(<array>) tostring(<array>) Description returns the index of the given value in a sorted array (or < 0 if not found) returns a new copy of an array returns true if the two arrays contain same elements in the same order sets every element to the given value arranges the elements into sorted order returns a string representing the array, such as "[10, 30, -25, 17]" Syntax: Arrays.<methodName>(<parameters>)

Arrays.toString Arrays.toString accepts an array as a parameter and returns a String representation of its elements. int[] e = {0, 2, 4, 6, 8; e[1] = e[3] + e[4]; System.out.println("e is " + Arrays.toString(e)); Output: e is [0, 14, 4, 6, 8] Must import java.util.arrays;

Weather question 2 Modify the weather program to print the following output: How many days' temperatures? 7 Day 1's high temp: 45 Day 2's high temp: 44 Day 3's high temp: 39 Day 4's high temp: 48 Day 5's high temp: 37 Day 6's high temp: 46 Day 7's high temp: 53 Average temp = 44.6 4 days were above average. Temperatures: [45, 44, 39, 48, 37, 46, 53] Two coldest days: 37, 39 Two hottest days: 53, 48

Weather answer 2 // Reads temperatures from the user, computes average and # days above average. import java.util.*; public class Weather2 { public static void main(string[] args) {... int[] temps = new int[days]; // array to store days' temperatures... (same as Weather program) // report results System.out.printf("Average temp = %.1f\n", average); System.out.println(count + " days above average"); System.out.println("Temperatures: " + Arrays.toString(temps)); Arrays.sort(temps); System.out.println("Two coldest days: " + temps[0] + ", " + temps[1]); System.out.println("Two hottest days: " + temps[temps.length - 1] + ", " + temps[temps.length - 2]);