Arrays 1 ● Java programming language provides a data structure called the array (מערך ), which can store a fixed-size sequential collection of elements.

Slides:



Advertisements
Similar presentations
Searching and Sorting an Array 4 Searching and sorting are two fundamental algorithms often implemented with arrays –Search an array to determine the location.
Advertisements

CHAPTER 10 ARRAYS II Applications and Extensions.
Arrays Chapter 6. Outline Array Basics Arrays in Classes and Methods Sorting Arrays Multidimensional Arrays.
1 Arrays b An array is an ordered list of values An array of size N is indexed from zero to N-1 scores.
Chapter 6Java: an Introduction to Computer Science & Programming - Walter Savitch 1 Chapter 6 l Array Basics l Arrays in Classes and Methods l Programming.
Arrays. A group of data with same type stored under one variable. It is assumed that elements in that group are ordered in series. In C# language arrays.
1 Arrays  Arrays are objects that help us organize large amounts of information  Chapter 8 focuses on: array declaration and use passing arrays and array.
CS102--Object Oriented Programming Lecture 6: – The Arrays class – Multi-dimensional arrays Copyright © 2008 Xiaoyan Li.
Arrays Data Structures - structured data are data organized to show the relationship among the individual elements. It usually requires a collecting mechanism.
Arrays in Java Selim Aksoy Bilkent University Department of Computer Engineering
C++ for Engineers and Scientists Third Edition
Chapter 8 Arrays and Strings
Sanjay Goel, School of Business, University at Albany, SUNY 1 MSI 692: Special Topics in Information Technology Lecture 4: Strings & Arrays Sanjay Goel.
Programming Arrays. Question Write a program that reads 3 numbers from the user and print them in ascending order. How many variables do we need to store.
CMPT 120 Lists and Strings Summer 2012 Instructor: Hassan Khosravi.
CHAPTER 7: SORTING & SEARCHING Introduction to Computer Science Using Ruby (c) Ophir Frieder at al 2012.
Java Unit 9: Arrays Declaring and Processing Arrays.
Chapter 6Java: an Introduction to Computer Science & Programming - Walter Savitch 1 l Array Basics l Arrays in Classes and Methods l Programming with Arrays.
Chapter 7: Arrays. In this chapter, you will learn about: One-dimensional arrays Array initialization Declaring and processing two-dimensional arrays.
Week 11 Introduction to Computer Science and Object-Oriented Programming COMP 111 George Basham.
Lists in Python.
Arrays in C++ UNIVERSITY OF THE PUNJAB (GUJRANWALA CAMPUS) 1 ADNAN BABAR MT14028 CR
Chapter 8 Arrays and Strings
 2008 Pearson Education, Inc. All rights reserved JavaScript: Arrays.
Introduction to Arrays in Java Corresponds with Chapter 6 of textbook.
Examples using Arrays. Summing Squares Problem: To compute the sum of the squares of N numbers N is given N values are also given These should be read.
From C++ to Java A whirlwind tour of Java for C++ programmers.
ARRAYS 1 Week 2. Data Structures  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently 
Arrays Module 6. Objectives Nature and purpose of an array Using arrays in Java programs Methods with array parameter Methods that return an array Array.
Java Programming: From Problem Analysis to Program Design, 4e
Hello.java Program Output 1 public class Hello { 2 public static void main( String [] args ) 3 { 4 System.out.println( “Hello!" ); 5 } // end method main.
1 © 2002, Cisco Systems, Inc. All rights reserved. Arrays Chapter 7.
The while Loop Syntax while (condition) { statements } As long condition is true, the statements in the while loop execute.
C++ Programming: From Problem Analysis to Program Design, Fifth Edition Arrays.
Lecture 7 Introduction to Programming in C Arne Kutzner Hanyang University / Seoul Korea.
8-1 Chapter 8: Arrays Arrays are objects that help us organize large amounts of information Today we will focuses on: –array declaration and use –bounds.
M180: Data Structures & Algorithms in Java Arrays in Java Arab Open University 1.
C++ for Engineers and Scientists Second Edition Chapter 11 Arrays.
Chapter 4: Control Structures II
OBJECTS FOR ORGANIZING DATA -- As our programs get more sophisticated, we need assistance organizing large amounts of data. : array declaration and use.
Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data.
מערכים (arrays) 02 דצמבר דצמבר דצמבר 1502 דצמבר דצמבר דצמבר 1502 דצמבר דצמבר דצמבר 15 1 Department of Computer Science-BGU.
Array Objectives To understand the concept of arrays To understand the purpose to which we use arrays. To be able to declare references to arrays. To be.
12/15/2015Engineering Problem Solving with C++, Second Edition, J. Ingber 1 Engineering Problem Solving with C++, Etter Chapter 6 One-Dimensional Arrays.
Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements.
Chapter 8: Arrays Copyright © 2008 W. W. Norton & Company. All rights reserved. 1 Chapter 8 Arrays.
1 Java linked list. Java linked list - definition ▪ Often in programming we are required to systematically store some type of information. A prime example.
 2008 Pearson Education, Inc. All rights reserved. 1 Arrays and Vectors.
CS 180 Recitation 7 Arrays. Used to store similar values or objects. An array is an indexed collection of data values of the same type. Arrays are the.
Java linked list.
Chapter 5: ARRAYS ARRAYS. Why Do We Need Arrays? Java Programming: From Problem Analysis to Program Design, 4e 2  We want to write a Java program that.
Arrays Declaring arrays Passing arrays to functions Searching arrays with linear search Sorting arrays with insertion sort Multidimensional arrays Programming.
SEQUENTIAL AND OBJECT ORIENTED PROGRAMMING Arrays.
Arrays Department of Computer Science. C provides a derived data type known as ARRAYS that is used when large amounts of data has to be processed. “ an.
VISUAL C++ PROGRAMMING: CONCEPTS AND PROJECTS Chapter 7A Arrays (Concepts)
Chapter 9 Introduction to Arrays Fundamentals of Java.
1 Agenda Arrays: Definition Memory Examples Passing arrays to functions Multi dimensional arrays.
1 Why do we need arrays? Problem - Input 5 test scores => int test1,test2,test3,test4,test5 100 test scores? 10,000 employees? A structured data type is.
L EC. 05: A RRAYS 0. C ONTENT  Features of arrays  Declaring, creating and using arrays  Enhanced for -construct  Variable length parameter-list 1.
Chapter 5 Arrays F Introducing Arrays F Declaring Array Variables, Creating Arrays, and Initializing Arrays F Passing Arrays to Methods F Copying Arrays.
2 Arrays Array is a data structure that represents a collection of the same type of data. A "fixed length list".
מערכים (arrays) 02 אוקטובר אוקטובר אוקטובר 1602 אוקטובר אוקטובר אוקטובר 1602 אוקטובר אוקטובר אוקטובר 16 Department.
Computer Programming BCT 1113
JavaScript: Functions.
Siti Nurbaya Ismail Senior Lecturer
Arrays An Array is an ordered collection of variables
Data Structures (CS212D) Week # 2: Arrays.
Arrays Week 2.
Arrays.
Presentation transcript:

Arrays 1 ● Java programming language provides a data structure called the array (מערך ), which can store a fixed-size sequential collection of elements of the same type. ● Arrays are widely used within Java programming for different purposes such as sorting, searching and etc.

Problems with simple variables Hard to give up values high number of variables. Complex to sort a high number of variables by value. Impossible to use loops. Example problem: Read one hundred numbers, compute their average, and find out how many numbers are above the average. We can use an array instead of a variables. 2

Array definition An array ( מערך ) is a collection of variables of the same data type, and the collection is assigned a name. Array can be declared for any type. In Java an array is an object ( עצם ). Each variable within the collection is called an array element. An array element is identified by combining the array name and a unique index ( אינדקס ). An index is an integer from zero to 1 minus the maximum number of elements in the array. An array of size N is indexed from 0 to N – 1. Array examples: –list of students’ marks –series of numbers entered by user –vectors –matrices 3

Array indexing In Java,array indexes always begin at zero. The array myList has 10 values, indexed from 0 to 9. The i-th element of array myList is specified by myList[i-1]. 4

Declaring array variables ● In Java arrays are objects ( עצם ). To create an array, the reference (הפניה ) to the array must be declared. ● The array can be created using the new operator, which allocates memory space to store values. Examples: double [ ] myList = new double [ 10 ]; The variable myList is declared to be an array of 10 real numbers whose type is written as double[ ]. int [ ] studGrades = new int [ 85 ]; The variable studGrades is declared to be an array of 85 integer numbers whose type is written as int[ ]. Note: once an array is declared to be a certain size, the number of values it can hold cannot be changed. 5

Default values and initialization ● When an array is created, its elements are assigned the default value of : 0 for the numeric primitive data types '\u0000' for char data types False for boolean data types. ● Declaring, creating, initializing in one step: double [ ] myList1 = { 1.9, 2.9, 3.4, 3.5 }; Note: Don’t use new operator if you plan to initialize the array. 6

Accessing array elements ● To access a value in an array, we use the name of array followed by the index in square brackets. int [ ] arr = { 69,61,73,19,37 }; arr[ 2 ] = 95; // initial value was 73 ● Array indexes are integers and we can use integer expression to specify the index. int a = 7, b = 2,c = -3; arr[ a/b ] = 71; // initial value was 19 System.out.println( arr[a + c] ); // output value is 37 NOTE :when accessing array elements, be careful to ensure that the index stays within the array bounds. 7

The length of an array In order to get the number of elements in an array, you can use the length attribute of an array. The length attribute of an array returns the size of the array ( number of elements). It can be used by writing arrayName.length For example : int a = myList.length; // a = 10 int b = studGrade.length; // b = 85 8

Array as Java object 9 ● Java array is a container object that holds a fixed number of values of a single type. ● The array declaration allocates only enough space for a reference to an array but doesn't create the actual array object. For example: int[ ] num = new int[5]; reference

The Assignment Operators and Arrays 10 int[ ] listA = { 5, 10, 15, 20, 25, 30, 35 }; int[ ] listB = new int[7];

The Assignment Operators and Arrays 11 Arrays after assignment statement ListB = ListA;

Array example 1 The next program section reads N integers into an array and then reverses them and prints. N value reads during the program execution Before revers After revers 12

Example 1 - solution System.out.print( "Enter the number of array elements : “ ); int [ ] arr = new int [reader.nextInt()]; for (int i = 0; i < arr.length; i++) { System.out.print("Enter number "+ (i+1) + " integer : “ ); arr[i] = reader.nextInt(); } // for for (int i = 0; i < arr.length/2; i++) { int temp = arr[i]; arr[i] = arr[arr.length – i - 1]; arr[arr.length-i-1] = temp; } // for System.out.println(" The numbers in revers order : "); for (int i = 0; i <arr.length; i++) System.out.println(arr[i]); number of array elements reads during the program running It is often convenient to use for loops when handling array, because the number of its elements is constant. 13

Array example 2 14 This program reads N integer number sequence and builds an array. The program builds an array from a sequence ( some numbers can appear twice or more in the sequence but appears only once in the array ). For example: N = 9 and input sequence is 9, 9, 5, 4, 4, 4, 1, 1, arr Note: maximum array’s elements is N, because each number can appears only once in the sequence.

Example 2 - solution 15 static final int N = 9; public static void main (String[] args) { int [ ] arr = new int[N]; int j = 1; // array index int num; // input variable arr[0] = reader.nextInt(); for (int i = 0; i < N - 1; i++) { num = reader.nextInt(); if(num != arr[j-1]) { arr[j] = num; j++; } //if } // for for(int i = 0; i < j; i++) System.out.println(arr[i]); } // main final keyword when used with a variable makes it a constant.

Array example 3 This program section reads 10 integers into an array, finds the max and min values of array elements and prints them. static final int N=10; public static void main (String[] args) { int [] arr = new int[N]; for (int i = 0; i < N; i++) arr[i] = reader.nextInt(); int max = arr[0],min = arr[0]; for (int i = 1; i < N; i++) { max = (arr[i]>max) ? arr[i] : max; min = (arr[i]<min) ? arr[i] : min; } //for System.out.println(" The max element is : "+max); System.out.println(" The min element is : "+min); } //void main If a variable is marked as final then the value of that variable cannot be changed i.e final keyword when used with a variable makes it a constant. if (arr[i]) > max max = arr[i]; else max = max; 16

Array example 4 17 This program calculates the number of different values in array of integers. public static void main (String[] args) { int a[ ] = { 5, 5, 2, 9, 3, 2, 5, 9, 3, 5 }; // array of integers int i, j; // loop counters int count = 1; // accumulator for(i =1; i < a.length; i++) { for(j = 0; j < i; j++) if(a[j] == a[i]) break; if(j == i) count++; } // for System.out.println(“The number of different values is : “ + count); } // main

Array example 4 18 public static void main (String[] args) { int a[ ] = { 5, 5, 2 }; // array of integers int i, j; // loop counters int count = 1; // accumulator for(i =1; i < a.length; i++) { for(j = 0; j < i; j++) if(a[j] == a[i]) break; if(j == i) count++; } // for System.out.println(count); } // main j == ia[ j ] == a[ i ]j < iji < 3icount 1 T1 FTT0 T2 FT0 FT1 F2 T 2 Trace table ( i < 3 only )

Array example 5 19 This program reads 100 letters and …? static final int N = 26; public static void main (String[] args) { int [] arr = new int[N]; int m = 0; // help variable for (int i = 0; i < N; i++) arr[i] = 0; for (int i = 0; i < 100; i++) { System.out.println(" Enter a letter: "); char ch = reader.next().charAt(0); arr[ch – ‘a’] ++; } // for for (int i = 1; i < N; i++) if(arr[i] > arr[m]) m = i; char mch = (char)(m + ’a’); System.out.println(" mch : “ + mch); } // main

Sorting ( מיון ) Sorting is the process of arranging a list of items in well – defined order. Sorting values of array elements is one of the basic array manipulations. Many sorting algorithms have been developed over the years. In this course we examine two sorting algorithms: selection sort (מיון בחירה) and insertion sort (מיון הכנסה). 20

Selection sort algorithm The selection sort algorithm selects for each position in the list the value, that should go in this position, and puts it there Scan starting with is smallest. Exchange 6 and 23 Scan starting with is smallest. Exchange 7 and 15 Scan starting with is smallest. Exchange 15 and 23 Scan starting with is smallest. Exchange 23 and 23 21

Selection sort implementation int [ ] arr = { 23,15,6,7,20 }; for(int i = 0; i < arr.length; i++) { int min_pos = i; for(int j = i+1; j < arr.length; j++) { if ( arr[j] < arr[min_pos] ) min_pos = j; int temp = arr[i]; // help variable arr[i] = arr[min_pos]; arr[min_pos] = temp; } // inner for } // outer for This program section uses a selection sort to arrange a list of integer values into ascending order ( סדר עלה ). The outer loop controls the position where the next smallest value will be stored. The inner loop finds the smallest value in the rest of the list. When the smallest value is determined, it is exchanged with the value stored at the index. The algorithm can easily be changed to put values in descending order ( סדר יורד ) by finding the largest value each time. 22

Insertion sort algorithm The insertion sort algorithm works by inserting each value into a previously sorted subset of the list is sorted. Shift nothing. Insert 9. 3 and 9 are sorted. Shift 9 to the right. Insert 6. 3,6 and 9 are sorted. Shift 9,6 and 3 to the right. Insert 1. 1,3,6 and 9 are sorted. Shift 9,6 and 3 to the right. Insert 2. All values are sorted 23

Insertion sort implementation int [ ] arr = { 3,9,6,1,2 }; for (int i = 1; i < arr.length; i++) { int j = i; int a = arr[i]; while ( j > 0 && arr[ j-1] > a) { arr[ j ] = arr[ j-1]; j--; } // block while arr[ j ] = a; } // block for The inner loop compares the current insert values with values stored with lower indexes. If the current insert value is less then the value at j position, that value is shifted to the right. The outer loop controls the index in the array of the next value to be inserted. 24

Java searching ( ( חיפוש Searching (חיפוש) is an operation which finds the location of a given element in an array. The search is said to be successful or unsuccessful depending on whether the element that is to be searched is found or not. Definition: A key is a value that you are looking for in an array. If found, the index of the first location of the key will be returned. If not found, a value of -1 will be returned. In this course we examine two searching algorithms: - linear search (חיפוש סדרתי) - binary search (בינארי חיפוש). 25

Linear search The simplest type of search is the liner (sequential) search. In the liner search, each element of the array is compared to the key, in the order it appears in the array, until the desired element is found. System.out.println( “enter search key”); int num = reader.nextInt(); // input key value boolean flag = false; for( int i = 0; i < arr.length; i++) { if (arr [i] == num) { flag = true; break; } // if } // for if (flag ) System.out.println(num + " is at position “ + i); else System.out.println(num + " not found "); This searching type can be applied to a sorted or an unsorted list. Searching in case of unsorted list starts from the 0 th element and continues until the element is found or the end of list is reached. 26

Linear search in sorted array int i; // loop counter System.out.println( “enter search key” ); int num = reader.nextInt(); // input key value for(i=0; i = arr[i]; i++) { if (arr [i] == num) { System.out.println(num + " is at position "+i); break; } } //for if (i==0 || i==arr.length || num>arr[i] ) System.out.println(num + " not found "); In case of sorted list we breaks the loop if the key value founded. 27

Binary search example 1 Index Find 6 in {-1, 5, 6, 18, 19, 25, 46, 78, 102, 114 }. low index = 0, high index = 9. Step 1 (middle element is 19 > 6): middle index = ( ) / 2 = 4 low index = 0, high index = 4 - 1=3 Step 2 (middle element is 5 < 6): middle index = (0 + 3 ) / 2 = 1 low index =0 +1, high index = 3 Step 3 (middle element is 6 == 6): middle index= (1 + 3 ) / 2 = 2 searched element is found !

Binary search example 2 index Find 103 in {-1, 5, 6, 18, 19, 25, 46, 78, 102, 114}. low index = 0, high index = 9. Step 1 (middle element is 19 <103): middle index = ( ) / 2 = 4 low index =4+1, high index = 9 Step 2 (middle element is 78 < 103): middle index = (5 + 9 ) / 2 = 7 low index =7 +1, high index = 9 Step 3 (middle element is 102 <103): middle index= (8 + 9 ) / 2 = 8 low index =8 +1, high index = 9 Step 4 (middle element is 114 >103): middle index= (9 + 9 ) / 2 = 9 low index =9, high index = 9 – 1 = 8 low index > high index : searched value is absent !

Binary search algorithm 1. Get the middle element; 2. If the middle element equals to the searched value, the algorithm stops; 3. Otherwise, two cases are possible: –searched value is less, than the middle element. In this case, go to the step 1 for the part of the array, before middle element. –searched value is greater, than the middle element. In this case, go to the step 1 for the part of the array, after middle element. Now we should define, when iterations should stop. First case is when searched element is found. Second one is when sub-array has no elements. In this case, we can conclude, that searched value isn't present in the array. 30

Binary search implementation int [ ] arr = { -1,5,6,18,19,25,46,78,102,114 }; int i = 0,h = arr.length; // low and high array indexes System.out.pirnt ("enter search key => "); int num = reader.nextInt(); // input key value while (i < h) { int mid = (i + h) / 2; // Compute mid point. if (num < arr[mid]) h = mid; else if (num > arr[mid]) i = mid+1; else { System.out.println( "found in "+mid+" position“ ); break; } } //while if ( i >= h ) System.out.println(num + " not found “ ); 31

32

Strings) ( מחרוזות Java string is a sequence of characters. They are objects of type String. Once a String object is created it cannot be changed. Basic string operations: String st = “Hello,word”; String c1 = “color red”, c2, c3 =“color green”; String bl = “ ”; // one character string String day = reader.next(); System.out.println(“ The day is : “ + day); String[ ] days ={ “Sunday”, “Monday”, “Thursday” }; Like array, every character in the string has its index, but we can’t access it directly ! colorred index 33 Note: double quotations

String methods 1 1.string.length(); returns the length of this string. String palindrome = "Dot saw I was Tod"; int len = palindrome.length(); System.out.println( "String Length is : " + len ); 2.Concatenating Strings ( + ) returns a new string that is string1 with string2 added to it at the end. String string1 = "saw I was "; System.out.println( "Dot " + string1 + "Tod“ ); 3. string.charAt(index); returns the character located at the String's specified index. String st = “Welcome to Java"; char result = st.charAt(11); System.out.println(result); This would produce String Length is : 17 This would produce Dot saw I was Tod This would produce following result : J 34

String methods 2 4. string1.compareTo(sryring2) - Compares two strings lexicographically: - The result is zero if the strings are equal. - The result is a negative integer if string1 lexicographically precedes the string2 string. - The result is a positive integer if string1 lexicographically follows the string2 string. We cannot just compare strings contents by simple if statement : String st1 = “Hello”; String st2 = “Hello”; if(st1==st2) { … } because st1 and st2 are memory addresses of st1 and st2. Hello Hello st1 st2 35

compareTo method - cont. Characters in Java are based on Unicode character set, which defines an ordering of all possible characters that can be used. The compareTo method can be used to determine the relative ( lexicographic ) order of strings. For example: String st1 = “AARBNML”, st2 = “AARZK”; int x=st1.compareTo(st2); // x = - 24: AARBNML AARZK st1 st2

compareTo method - examples For example: String str1 = "Strings are immutable"; String str2 = "Strings are immutable"; String str3 = "Integers are not immutable"; int result = str1.compareTo( str2 ); System.out.println(result); result = str2.compareTo( str3 ); System.out.println(result); result = str3.compareTo( str1 ); System.out.println(result ); This produces following result:

String methods 3 5. string.substring ( index ) returns a new string that is a substring of the string. The substring begins with the character at the specified index and extends to the end of this string. String st1 = “abcdefg”; String st2 = st1.substring(3); // st2 = “defg” String st3 = st1.substring(6); // st3 = “g” 6. string1.indexOf(string2) returns the index within string1 of the first occurrence of the substring2. If it does not occur as a substring, -1 is returned. String st1 = “abcdefg”, st2 = “cd”,st3 = “abc”; int p1 = st1.indexOf(st2); // p1= 2 int p2 = st1.indexOf(st3); // p2 = 0 int p3 = st1.indexOf(“xy”); // p3 = -1 38

String methods 4 7. string1.indexOf(string2, ind) returns the index within string1 of the first occurrence of the substring2 from the ind place. If it does not occur as a substring from ind place, -1 is returned. String st1 = “abcdefg”; int p1 = st1.indexOf(“cd”,5); // p1= -1 int p2 = st1.indexOf (“cd”,1); // p2 = 2 int p3 = st1.indexOf(“ab”,3); // p3 = string.substring ( startIndex,endIndex ) returns a new string that is a substring of the string. The substring begins with the character at the specified startIndex and extends to the endIndex (but not including). String st1 = “abcdefg”; String st2 = st1.substring(3,6); // st2 = “def” String st3 = st1.substring(2,5); // st3 = “cde” 39

String methods 5 9. string1.lastIndexOf(string2) returns the index within string1 of the last occurrence of the substring2. If it does not occur as as substring, -1 is returned. String st1 = “abcdeabfg”; int p1 = st1.lastIndexOf(“ab”); // p1= 5 int p2 = st1.lastIndexOf (“abc”); // p2 = 0 int p3 = st1.lastIndexOf(“xyz”); // p3 = string.replace(oldChar, newChar) returns new string resulting from replacing all occurrences of oldChar in this string with newChar. String s1 = “abaabcas”; String s2 = s1.replace(‘a’, ‘*’); // s2 = “*b**bc*s” 40

Empty string String in Java is considered empty if its length is zero. Empty String is represented by String literal “”. For example: String str1 = “”; // empty string String with white space are not considered as empty String in Java. String str2 = “ “; // five characters string We often needs to check if String is empty or not. There are two ways to find if String is empty or not. 1.Checking if String is empty by using length() Java method : if(str1.length() == 0) …. 2. Checking if String is empty by using boolean type isEmpty() Java method : if( str1.isEmpty() ) … 41

Empty string - example public class EmptyStringDemo { public static void main(String[ ] args) { String str = "tutorialspoint"; /* prints length of string str */ System.out.println("length of string = " + str.length()); /* checks if the string str is empty or not */ System.out.println("is this string empty? = " + str.isEmpty()); } // main } // EmptyString Demo 42 This will produce the following result : length of string = 14 is this string empty? = false

String methods - example 1 int words = 0; // words counter int i = 0; // loop counter String snc = "Welcome to Java course."; do { if( snc.charAt(i) == ' ') words++; i++; } while( i< snc.length( ) ); System.out.println( "The number of words is: "+ (++words)); This program section reads the sentences,calculates and prints it word’s numbers. ? This would produce 4 43

String methods - example 2 44 This program section reads the string and tests it. If the string is palindrome, the program prints “YES”, otherwise “NO”. public static void main(String[] args) { boolean flag = true; // help variable String str; // input string System.out.println(“Enter the string”); str = reader.next(); int size = str.length(); for(int i = 0; i <size/2 && flag; i++) if(str.charAt(i) != str.charAt( size – 1 – i) flag = false; if(flag) System.out.println(“YES”); else System.out.println(“NO”); } abcba Size = 5

String methods - example 3 45 This program reads the string and builds the array of all characters from the input string which appears only one time. For example: input string = "abcbdefdfffgh" output array is : hgeca b - 2 times d - 2 times f - 4 times

example 3 solution 46 public static void main(String[] args) { String st = reader.next(); int i, j, k; // loop counters boolean flag; // help variable int len = str.length(); char[] helpArray = new char[len]; // help array for(i = 0;i < len;i++) helpArray[i] = str.charAt(i); for(i = 0; i < len-1; i++) { for(j = i+1,flag = false; j < len; j++) if(helpArray[i] == helpArray[j]) { for(k = j ;k < len-1; k++) helpArray[k] = helpArray[k+1]; flag = true; j--; len--; } // if

example 3 solution, cont. 47 if( flag ) { for(k = i ;k <len-1; k++) helpArray[k] = helpArray[k+1]; i--; len--; } // if(flag) } // outer for char[ ] finArr = new char[len]; // creating output array for(i = 0;i< len;i++) finArr[i] = helpArray[i]; /* printing output array */ for(i = 0;i< len;i++) System.out.print (helpArray[i]); System.out.println(); } // main

Exam question example 48 כתוב תכנית הקולטת מחרוזת של טקסט ומדפיסה מחרוזת חדשה המכילה את אותו טקסט כאשר:

Exam question - solution String s = reader.next(); String fixStr = ""; for(int i = 0; i < s.length(); i++) { if (s.charAt(i) == '.' || s.charAt(i) == ',') { /* Remove spaces before point or comma */ for (int j = i-1; j >= 0 && s.charAt(j) == ' '; j--) fixStr = fixStr.substring(0,fixStr.length() - 1); fixStr += s.charAt(i) + " "; /* Remove redundant spaces after point or comma */ while ( i+1 < s.length() && s.charAt(i+1) == ' ') i++; } // if else fixStr += s.charAt(i); } // for /* Remove redundant characters after the last point */ for (int i = fixStr.length() - 1; i >= 0 && fixStr.charAt(i) == ' '; i--) fixStr = fixStr.substring(0,fixStr.length() - 1); System.out.println( “ The new string is :” + fixStr); 49

Two - dimensional arrays Java, as with most languages, supports multi-dimensional arrays - 1-dimensional, 2-dimensional, 3-dimensional,... In practice most arrays are one-dimensional, and two-dimensional. 2-dimensional arrays ( 2D array) are usually represented with a row-column "spreadsheet" style. Two-dimensional arrays are usually visualized as a matrix, with rows and columns. Assume we have an array, arr, with two rows and four columns. int [][] arr = new int[2][4]; // Two rows and four columns Column index Row index 50

Two - dimensional arrays 51 A 2D Array in JAVA is really an Array of Arrays: Assume we have an array : int [ ][ ] nums = new int[5][4]; 1. create the single reference nums (yellow square) int [ ][ ] nums; 2. create the array of references (blue squares) nums = new int[5][ ]; 3. this create the second level of arrays (red squares) for (int i = 0; i < 5 ; i++) nums[ i ] = new int[4]; // create arrays of integers The above is really equivalent to a 3- step process :

Two - dimensional arrays 52 ● A 2 - dimensional array in Java can have different numbers of elements in different rows. In other words: a 2-dimensional array in Java is made up with many rows of 1- dimensional arrays. For example: NOTE : We will only discuss and use rectangular 2-dimensional arrays in this course.

Declaring, Creating and Initializing You can also use an array initializer to declare, create and initialize a two-dimensional array. For example : int [ ][ ] array = new int[4][3]; array[0][0] = 1; array[0][1] = 2; array[0][2] = 3; array[1][0] = 4; array[1][1] = 5; array[1][2] = 6; array[2][0] = 7; array[2][1] = 8; array[2][2] = 9; array[3][0] = 10; array[3][1] = 11; array[3][2] = 12; int [ ][ ] array = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12} }; Same as static final int ROW = 4; static final int COL = 3; int array = new int [ ROW ][ COL ]; for (int i = 0; i < ROW; i++) for (int j = 0; j < COL; j++) arr[i][ j ] = reader.nextInt(); Two-dimensional arrays are almost always processed with nested for loops. The two index variables are often called i and j. 53

Lengths of Two-dimensional arrays int[ ][ ] x = new int[3][4]; for (int i = 0; i < x.length; i++) { for (int j = 0; j < x[ i ].length; j++) System.out.print ( “ “+x[ i ][ j ]); System.out.println ( “ “); } // for You can get the size of each dimension with the length attribute. This is the most general style. 54

Lengths of Two-dimensional arrays 55 ● If a is a 2- dimensional array then: a[i] is a 1- dimensional array. In other words: a 2- dimensional array in Java is made up with many rows of 1-dimensional arrays. ● The variable a[i].length contains the number of columns in row i.

Lengths of Two-dimensional arrays, example. 56 This program section calculates and prints the sum of each column of a 2D rectangular matrix. int sum; // sum of column elements for (int col = 0; col < matrix[0].length; col++) { sum = 0; for (int row = 0; row < matrix.length; row++) sum = sum + matrix[row][col]; System.out.println("Sum of column " + (col + 1) + " = " + sum); { // outer for

Lengths of Two-dimensional arrays, example. public static void main(String[ ] args) { String[ ][ ] strarray = { {"this","is","the","first","row"}, {"this","is","the","second","row"}, {"this","is","the","third","row"} }; for(int i = 0; i < strarray.length; i++) { for(int j = 0; j < strarray[ i ].length; j++) System.out.print(strarray[ i ][ j ]+" "); System.out.println(); } // outer for } // main 57 this is the first row this is the second row this is the third row This would produce :

Lengths of Two-dimensional arrays, example. 58 This program section calculates and prints the maximum element of each row in a 2D matrix. for ( int row = 0; row < matrix.length; row++) { largest = matrix[row][0]; for (int col = 1; col < matrix[row].length col++) if (largest < matrix[row][col]) largest = matrix[row][col]; System.out.println("The largest element of row " + (row + 1) + " = " + largest); { // outer for

Two - dimensional array example This program section checks if the diagonal’s elements of square matrix are equal. Minor diagonal Main diagonal int [][] mat = {{3,0,9,3},{-1,7,7,2}, {10,6,6,-15},{4,8,5,4}}; boolean flag = true; // help variable int i = 0; // loop counter while ( i < mat.length && flag) { if ( mat[ i ][ i ] != mat[ i ][mat.length - i - 1] ) flag = false; i++; } // while if ( flag ) System.out.println(“Yes"); else System.out.println(“No"); imat[i][i]mat[i][4-i-1] mat.length = 4 59

Two - dimensional array example 2 60 This program section transposes the integer square matrix. public static void main(String[ ] args) { System.out.print ("Enter array size: "); int size = reader.nextInt(); // size=3 int[ ][ ] a = new int[size][size]; for (int r = 0; r < a.length; r++) for (int c = 0; c < a[0].length; c++) a[r][c] = reader.nextInt(); int startc = 1; for (int r = 0; r < a.length; r++) { for (int c = startc; c < a[0].length; c++) { int temp = a[r][c]; a[r][c] = a[c][r]; a[c][r] = temp; } // inner loop startc++; } // outer loop } // main Original array: Transposed array:

Matrix multiplication 61 Typical applications in science and engineering involve implementing various mathematical operations with matrix,for example matrix multiplication: Note: the number of columns in the A matrix m equals the number of rows in the matrix B. Square matrix

Matrix multiplication, cont. 62 static final int N = 3; // square matrix double[ ][ ] c = new double[N][N]; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { for (int k = 0; k < N; k++) c[i][j] + = a[i][k] * b[k][j]; } // for j } // for i

Puzzle 63