Basic Java Syntax. Slides 2016 Marty Hall, hall@coreservlets.com



Similar documents
For live Java EE training, please see training courses

Java with Eclipse: Setup & Getting Started

core 2 Basic Java Syntax

Official Android Coding Style Conventions

Advanced Java Client API

First Java Programs. V. Paúl Pauca. CSC 111D Fall, Department of Computer Science Wake Forest University. Introduction to Computer Science

Android Programming: Installation, Setup, and Getting Started

The Google Web Toolkit (GWT): Declarative Layout with UiBinder Basics

MULTIPLE CHOICE. Choose the one alternative that best completes the statement or answers the question.

Introduction to Java Applications Pearson Education, Inc. All rights reserved.

Handout 3 cs180 - Programming Fundamentals Spring 15 Page 1 of 6. Handout 3. Strings and String Class. Input/Output with JOptionPane.

Introduction to Java

Hadoop Streaming coreservlets.com and Dima May coreservlets.com and Dima May

AP Computer Science Java Subset

Virtual Machine (VM) For Hadoop Training

The Google Web Toolkit (GWT): The Model-View-Presenter (MVP) Architecture Official MVP Framework

Apache Pig Joining Data-Sets

Example of a Java program

Translating to Java. Translation. Input. Many Level Translations. read, get, input, ask, request. Requirements Design Algorithm Java Machine Language

Building Web Services with Apache Axis2

The Google Web Toolkit (GWT): Overview & Getting Started

JDK 1.5 Updates for Introduction to Java Programming with SUN ONE Studio 4

Map Reduce Workflows

Sample CSE8A midterm Multiple Choice (circle one)

1.1 Your First Program

Android Programming Basics

Install Java Development Kit (JDK) 1.8

Object Oriented Software Design

Java Crash Course Part I

CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013

System.out.println("\nEnter Product Number 1-5 (0 to stop and view summary) :

Introduction to Java Lecture Notes. Ryan Dougherty

qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcvbnmq

HBase Key Design coreservlets.com and Dima May coreservlets.com and Dima May

Web Programming Step by Step

Web Applications. Originals of Slides and Source Code for Examples:

Programmierpraktikum

Topic 11 Scanner object, conditional execution

Moving from CS 61A Scheme to CS 61B Java

Chapter 2 Introduction to Java programming

CS 106 Introduction to Computer Science I

HBase Java Administrative API

Java Programming Fundamentals

Android Programming: 2D Drawing Part 1: Using ondraw

Hadoop Distributed File System (HDFS) Overview

Scanner. It takes input and splits it into a sequence of tokens. A token is a group of characters which form some unit.

JavaScript: Introduction to Scripting Pearson Education, Inc. All rights reserved.

CS106A, Stanford Handout #38. Strings and Chars

AP Computer Science Static Methods, Strings, User Input

Basic Java Constructs and Data Types Nuts and Bolts. Looking into Specific Differences and Enhancements in Java compared to C

Mobile App Design Project #1 Java Boot Camp: Design Model for Chutes and Ladders Board Game

Web Applications. For live Java training, please see training courses at

CSE 1223: Introduction to Computer Programming in Java Chapter 2 Java Fundamentals

CS1020 Data Structures and Algorithms I Lecture Note #1. Introduction to Java

Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program

Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner.

Object Oriented Software Design

JHU/EP Server Originals of Slides and Source Code for Examples:

java Features Version April 19, 2013 by Thorsten Kracht

WA2099 Introduction to Java using RAD 8.0 EVALUATION ONLY. Student Labs. Web Age Solutions Inc.

Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program

PHP Tutorial From beginner to master

Building Java Programs

HDFS - Java API coreservlets.com and Dima May coreservlets.com and Dima May

Ohio University Computer Services Center August, 2002 Crystal Reports Introduction Quick Reference Guide

Building Java Programs

CompSci 125 Lecture 08. Chapter 5: Conditional Statements Chapter 4: return Statement

Debugging Ajax Pages: Firebug

J a v a Quiz (Unit 3, Test 0 Practice)

Code::Blocks Student Manual

Topics. Parts of a Java Program. Topics (2) CS 146. Introduction To Computers And Java Chapter Objectives To understand:

LAB 1. Familiarization of Rational Rose Environment And UML for small Java Application Development

Lecture 5: Java Fundamentals III

Custom Javascript In Planning

2011 Marty Hall An Overview of Servlet & JSP Technology Customized Java EE Training:

HDFS Installation and Shell

Building Java Programs

Visual Basic Programming. An Introduction

& JSP Technology Originals of Slides and Source Code for Examples:

Introduction to Java. CS 3: Computer Programming in Java

Managed Beans II Advanced Features

Installing Java 5.0 and Eclipse on Mac OS X

ESPResSo Summer School 2012

Chulalongkorn University International School of Engineering Department of Computer Engineering Computer Programming Lab.

Part I. Multiple Choice Questions (2 points each):

Introduction to Java Applets (Deitel chapter 3)

Computer Programming I

Chapter 2: Elements of Java

Informatica e Sistemi in Tempo Reale

VB.NET Programming Fundamentals

1) Which of the following is a constant, according to Java naming conventions? a. PI b. Test c. x d. radius

Chapter 2. println Versus print. Formatting Output withprintf. System.out.println for console output. console output. Console Input and Output

Exercise 4 Learning Python language fundamentals

Application Security

COSC Introduction to Computer Science I Section A, Summer Question Out of Mark A Total 16. B-1 7 B-2 4 B-3 4 B-4 4 B Total 19

13 File Output and Input

Chapter 5 Functions. Introducing Functions

We will learn the Python programming language. Why? Because it is easy to learn and many people write programs in Python so we can share.

Chapter 2 Elementary Programming

Building Java Programs

Transcription:

coreservlets.com custom onsite training Basic Java Syntax Originals of slides and source code for examples: http://courses.coreservlets.com/course-materials/java.html Also see Java 8 tutorial: http://www.coreservlets.com/java-8-tutorial/ and many other Java EE tutorials: http://www.coreservlets.com/ Customized Java training courses (onsite or at public venues): http://courses.coreservlets.com/java-training.html Slides 2016 Marty Hall, hall@coreservlets.com For additional materials, please see http://www.coreservlets.com/. The Java tutorial section contains complete source code for all examples in this tutorial series, plus exercises and exercise solutions for each topic. coreservlets.com custom onsite training For customized training related to Java or JavaScript, please email hall@coreservlets.com Marty is also available for consulting and development support Taught by lead author of Core Servlets & JSP, co-author of Core JSF (4 th Ed), and this tutorial. Available at public venues, or custom versions can be held on-site at your organization. Courses developed and taught by Marty Hall JSF 2.3, PrimeFaces, Java programming (using Java 8, for those new to Java), Java 8 (for Java 7 programmers), JavaScript, jquery, Ext JS, Spring Framework, Spring MVC, Java EE 8 MVC, Android, GWT, custom mix of topics Courses available in any state or country. Maryland/DC companies can also choose afternoon/evening courses. Courses Slides developed 2016 Marty and Hall, taught hall@coreservlets.com by coreservlets.com experts (edited by Marty) Hadoop, Hibernate/JPA, HTML5, RESTful Web Services For additional materials, please see http://www.coreservlets.com/. Contact hall@coreservlets.com The Java tutorial section for details contains complete source code for all examples in this tutorial series, plus exercises and exercise solutions for each topic.

Topics in This Section Basics Accessing arrays Looping Indenting code if statements and other conditionals Strings Building arrays Performing basic mathematical operations Getting input from the user Converting strings to numbers 4 coreservlets.com custom onsite training Setup, Execution, and Most Basic Syntax Slides 2016 Marty Hall, hall@coreservlets.com For additional materials, please see http://www.coreservlets.com/. The Java tutorial section contains complete source code for all examples in this tutorial series, plus exercises and exercise solutions for each topic.

Eclipse: Making Projects Main steps File New Project Java Java Project Pick any name If you plan to run from command line Choose sources/classes in same project folder 6 Eclipse: Creating Classes Main steps R-click on project New Class You can have Eclipse make main when class created, but easier to use shortcut to insert it later Eventually you will make package (subdirectory) first, then put class there Alternative Can also copy/rename existing class 7

8 Getting Started: Syntax Example public class HelloWorld { public static void main(string[] args) { System.out.println("Hello, world."); Details Processing starts in main Eclipse can create main automatically When creating class: choose main as option Eclipse shortcut inside class: type main then hit Control-space Routines usually called methods, not functions. Printing is done with System.out.print... System.out.println, System.out.print, System.out.printf Eclipse shortcut: type sysout then hit Control-space Getting Started: Execution File: HelloWorld.java public class HelloWorld { public static void main(string[] args) { System.out.println("Hello, world."); Compiling Eclipse: just save file > javac HelloWorld.java Executing Eclipse: R-click, Run As, Java Application > java HelloWorld Hello, world. 9

Idea 10 Packages Packages are subdirectories used to avoid name conflicts Java class must have package subdirname; at the top But Eclipse puts this in automatically when you right-click on a package and use New Class Naming conventions Package names are in all lower case Some organizations use highly nested names com.companyname.projectname.projectcomponent Creating packages in Eclipse R-click project, New Package Then R-click package and New Class HelloWorld with Packages (in src/mypackage folder) package mypackage; public class HelloWorld { public static void main(string[] args) { System.out.println("Hello, world (using packages)"); 11 Run from Eclipse in normal manner: R-click, Run As Java Application. Running from the command line is a pain: you must go to parent directory and do java mypackage.helloworld. Run from Eclipse and it is simple to use packages.

coreservlets.com custom onsite training The + Operator, Array Basics, Command Line Args Slides 2016 Marty Hall, hall@coreservlets.com For additional materials, please see http://www.coreservlets.com/. The Java tutorial section contains complete source code for all examples in this tutorial series, plus exercises and exercise solutions for each topic. The + Operator Use + for addition If both arguments are numbers, + means addition. Example: double result = 2.3 + 4.5; Use + for string concatenation If either argument is String, + means concatenation + is only overloaded operator (operator with multiple meanings) in all of Java Examples String result1 = "Hello, " + "World"; // "Hello, World" String result2 = "Number " + 5; // "Number 5" 13

Array Basics: Accessing Elements Arrays are accessed with [ ] Array indices are zero-based int[] nums = { 2, 4, 6, 8 ; nums[0] is 2 nums[3] is 8 Trying to access nums[4] results in error Main is passed an array of strings args[0] returns first command-line argument args[1] returns second command-line argument, etc. Error if you try to access more args than were supplied 14 Array Basics: The length Field The length variable tells you number of array elements Gives the number of elements in any array String[] names = { "John", "Jane", "Juan" ; names.length is 3 But last entry ("Juan") is names[2], not names[3] For command-line arguments In main, args.length gives the number of command-line arguments Unlike in C/C++, the name of the program is not inserted into the command-line arguments 15

Command-line Arguments Are useful for learning and testing Command-line args are slightly helpful for beginner s practice But, programs given to end users should almost never use command-line arguments They should pop up a GUI to collect input Eclipse has poor support Entering command-line args via Eclipse is more trouble than it is worth So, to test with command-line args: Save the file in Eclipse (causing it to be compiled) Navigate to folder on desktop (not within Eclipse) Open command window (Start icon, Run cmd) Type java Classname arg1 arg2 16 Example: Command Line Args and length Field File: ShowTwoArgs.java (naïve version) public class ShowTwoArgs { public static void main(string[] args) { System.out.println("First arg: " + args[0]); System.out.println("Second arg: " + args[1]); 17 Oops! Crashes if there are fewer than two command-line arguments. The code should have checked the length field, like this: if (args.length > 1) { dotheprintstatements(); else { giveanerrormessage();

Example (Continued) Compiling (automatic on save in Eclipse) > javac ShowTwoArgs.java Manual execution > java ShowTwoArgs Hello Class First arg: Hello Second arg: Class > java ShowTwoArgs [Error message] Eclipse execution (cumbersome) To assign command line args: R-click, Run As, Run Configurations, click on Arguments tab 18 coreservlets.com custom onsite training Loops Slides 2016 Marty Hall, hall@coreservlets.com For additional materials, please see http://www.coreservlets.com/. The Java tutorial section contains complete source code for all examples in this tutorial series, plus exercises and exercise solutions for each topic.

20 Looping Constructs for/each for(variable: collection) { body; for for(init; continuetest; updateop) { body; while while (continuetest) { body; do do { body; while (continuetest); For/Each Loops public static void listentries(string[] entries) { for(string entry: entries) { System.out.println(entry); Result String[] test = {"This", "is", "a", "test"; listentries(test); 21 This is a test

For Loops public static void listnums1(int max) { for(int i=0; i<max; i++) { System.out.println("Number: " + i); Result listnums1(4); 22 Number: 0 Number: 1 Number: 2 Number: 3 While Loops public static void listnums2(int max) { int i = 0; while (i < max) { System.out.println("Number: " + i); i++; // "++" means "add one" Result listnums2(5); 23 Number: 0 Number: 1 Number: 2 Number: 3 Number: 4

Do Loops public static void listnums3(int max) { int i = 0; do { System.out.println("Number: " + i); i++; while (i < max); // ^ Don t forget semicolon Result listnums3(3); Number: 0 Number: 1 Number: 2 24 Summing Array Entries: Version 1 public class ArraySum { public static void main(string[] args) { double[] numbers = { 1.1, 2.2, 3.3 ; System.out.println("[v1] Sum of {1.1,2.2,3.3=" + arraysum1(numbers)); 25 public static double arraysum1(double[] nums) { double sum = 0; for(double num: nums) { sum = sum + num; // Or sum += num return(sum); [v1] Sum of {1.1,2.2,3.3=6.6

Summing Array Entries: Version 2 public class ArraySum { public static void main(string[] args) { double[] numbers = { 1.1, 2.2, 3.3 ; System.out.println("[v2] Sum of {1.1,2.2,3.3=" + arraysum2(numbers)); 26 public static double arraysum2(double[] nums) { double sum = 0; for(int i=0; i<nums.length; i++) { sum = sum + nums[i]; return(sum); [v2] Sum of {1.1,2.2,3.3=6.6 Summing Array Entries: Version 3 public class ArraySum { public static void main(string[] args) { double[] numbers = { 1.1, 2.2, 3.3 ; System.out.println("[v3] Sum of {1.1,2.2,3.3=" + arraysum3(numbers)); 27 public static double arraysum3(double[] nums) { double sum = 0; int i=0; while(i<nums.length) { sum = sum + nums[i]; i++; // Or i = i + 1, or i += 1 return(sum); [v3] Sum of {1.1,2.2,3.3=6.6

Summing Array Entries: Version 4 public class ArraySum { public static void main(string[] args) { double[] numbers = { 1.1, 2.2, 3.3 ; System.out.println("[v4] Sum of {1.1,2.2,3.3=" + arraysum4(numbers)); 28 public static double arraysum4(double[] nums) { double sum = 0; int i=0; do { sum = sum + nums[i]; i++; while(i<nums.length); return(sum); [v4] Sum of {1.1,2.2,3.3=6.6 coreservlets.com custom onsite training Class Structure and Formatting Slides 2016 Marty Hall, hall@coreservlets.com For additional materials, please see http://www.coreservlets.com/. The Java tutorial section contains complete source code for all examples in this tutorial series, plus exercises and exercise solutions for each topic.

Defining Multiple Methods in Single Class public class LoopTest { public static void main(string[] args) { String[] test = {"This", "is", "a", "test"; listentries(test); listnums1(5); listnums2(6); listnums3(7); These methods say static because they are called directly from main. In the upcoming sections on OOP, we will explain what static means and why most regular methods do not use static. But for now, just note that methods that are directly called by main must say static. 30 public static void listentries(string[] entries) {... public static void listnums1(int max) {... public static void listnums2(int max) {... public static void listnums3(int max) {... Yes Indentation: Blocks that are Nested More Should be Indented More No for(...) { for(...) { for(...) { for(...) {

Yes Indentation: Blocks that are Nested the Same Should be Indented the Same No for(...) { for(...) { for(...) { for(...) { Indentation: Number of Spaces and Placement of Braces is a Matter of Taste OK for(...) { for(...) { OK for(...) { for(...) { Some organizations or projects make coding-style documents that all developers in the organization or on the project should follow. For example, the one for Google can be found at https://google.github.io/styleguide/javaguide.html. Although I personally follow almost all of those stylistic conventions, I am skeptical about how necessary or even valuable it is to enforce this on everyone in an organization or project. OK for(...) { for(...) {

coreservlets.com custom onsite training Conditionals Slides 2016 Marty Hall, hall@coreservlets.com For additional materials, please see http://www.coreservlets.com/. The Java tutorial section contains complete source code for all examples in this tutorial series, plus exercises and exercise solutions for each topic. 35 If Statements: One or Two Options Single option if (booleanexpression) { statement1;... statementn; Two options if (booleanexpression) {... else {... The value inside parens must be strictly boolean (i.e., true or false), unlike C, C++, and JavaScript. A widely accepted best practice is to use the braces even if there is only a single statement inside the if or else.

If Statements: More than Two Options Multiple options if (booleanexpression1) {... else if (booleanexpression2) {... else if (booleanexpression3) {... else {... 36 Example 37 Switch Statements int month =...; String monthstring; switch(month) { case 0: monthstring = "January"; break; case 1: monthstring = "February"; break; case 2: monthstring = "March"; break;... default: monthstring = "Invalid month"; break; Syntax is mostly like C and C++ Types can be primitives, enums, and (Java 7 and later) Strings

==,!= 38 Boolean Operators Equality, inequality. In addition to comparing primitive types, == tests if two objects are identical (the same object), not just if they appear equal (have the same fields). More details when we introduce objects. <, <=, >, >= Numeric less than, less than or equal to, greater than, greater than or equal to. &&, Logical AND, OR. Both use short-circuit evaluation to more efficiently compute the results of complicated expressions if ((n > 5) && (n < 8)) { dofor6or7(...);! Logical negation. For example, if (!(x < 5)) is the same as if (x >= 5) Example: If Statements public static int max(int n1, int n2) { if (n1 >= n2) { return(n1); else { return(n2); 39

coreservlets.com custom onsite training Strings Slides 2016 Marty Hall, hall@coreservlets.com For additional materials, please see http://www.coreservlets.com/. The Java tutorial section contains complete source code for all examples in this tutorial series, plus exercises and exercise solutions for each topic. Overview Strings: Basics String is a real class in Java, not an array of characters as in C++ The String class has a shortcut method to create a new object: just use double quotes String s = "Hello"; Differs from normal classes, where you use new to build an object Use equals to compare strings Never use == to test if two Strings have same characters! 41

Using == to Compare Strings (Wrong!) public class CheckName1 { public static void main(string[] args) { if (args.length == 0) { System.out.println("Nobody"); else if (args[0] == "Marty") { System.out.println("Hi, Marty"); else { System.out.println("Hi, stranger"); This always prints Hi, stranger, even if the first command line argument is Marty. 42 Using equals to Compare Strings (Right!) public class CheckName2 { public static void main(string[] args) { if (args.length == 0) { System.out.println("Nobody"); else if (args[0].equals("marty")) { System.out.println("Hi, Marty"); else { System.out.println("Hi, stranger"); 43

Strings: Methods Methods to call on a String contains, startswith, endswith, indexof, substring, split, replace, replaceall, touppercase, tolowercase, equalsignorecase, trim, isempty, etc. For replacing, can use regular expressions, not just static strings Example String word = "..."; if (word.contains("q")) {... Static methods in String class String.format, String.join, String.valueOf, etc. Example String numberasstring = String.valueOf(17); 44 coreservlets.com custom onsite training More on Arrays Slides 2016 Marty Hall, hall@coreservlets.com For additional materials, please see http://www.coreservlets.com/. The Java tutorial section contains complete source code for all examples in this tutorial series, plus exercises and exercise solutions for each topic.

Building Arrays: One-Step Process Declare and allocate array in one fell swoop type[] var = { val1, val2,..., valn ; Examples: int[] values = { 10, 100, 1_000 ; String[] names = {"Joe", "Jane", "Juan"; Point[] points = { new Point(0, 0), new Point(1, 2), new Point(3, 4) ; 46 Minor note: in Java 7 and later, underscores are ignored in numbers, so 1_000 above is the same as 1000. 47 Building Arrays: Two-Step Process Step 1: allocate an empty array (really array of references): Type[] var = new Type[size]; E.g.: int[] primes = new int[x]; // x is positive integer String[] names = new String[someInteger]; Step 2: populate the array primes[0] = 2; names[0] = "Joe"; primes[1] = 3; names[1] = "Jane"; primes[2] = 5; names[2] = "Juan"; primes[3] = 7; names[3] = "John"; etc. (or use a loop to fill in values) etc. (or use a loop to fill in values)

Default Array Values If you fail to populate an entry Default value is 0 for numeric arrays int[] nums = new int[7]; int value = 3 + nums[2]; // value is 3 Default value is null for Object arrays String[] words = new String[7]; System.out.println(words[2]); // Prints null if (words[3].contains("q") {... // Crashes with NullPointerException 48 Two-Step Process: Example 1 public static Circle[] makecircles1(int numcircles) { Circle[] circles = new Circle[numCircles]; // Empty array of proper size for(int i=0; i<circles.length; i++) { circles[i] = new Circle(Math.random() * 10); // Populate array return(circles); This approach is correct! 49

Two-Step Process: Example 2 public static Circle[] makecircles2(int numcircles) { Circle[] circles = new Circle[numCircles]; // Empty array of proper size for(int i=0; i<circles.length; i++) { circles[i].setradius(math.random() * 10); // NullPointerException return(circles); This approach fails: the call to setradius crashes with NullPointerException because circles[i] is null. 50 Two-Step Process: Example 3 public static Circle[] makecircles3(int numcircles) { Circle[] circles = new Circle[numCircles]; for(circle c: circles) { c = new Circle(Math.random() * 10); // Fails to store c in array return(circles); // Array still contains only null pointers This approach fails: array is still empty after the loop. 51

Multidimensional Arrays Multidimensional arrays Implemented as arrays of arrays int[][] twod = new int[64][32]; String[][] cats = {{ "Caesar", "blue-point", { "Heather", "seal-point", { "Ted", "red-point" ; Note: Number of elements in each row need not be equal 53 int[][] irregular = { { 1, { 2, 3, 4, { 5, { 6, 7 ; TriangleArray: Example public class TriangleArray { public static void main(string[] args) { int[][] triangle = new int[10][]; for(int i=0; i<triangle.length; i++) { triangle[i] = new int[i+1]; 54 for (int i=0; i<triangle.length; i++) { for(int j=0; j<triangle[i].length; j++) { System.out.print(triangle[i][j]); System.out.println();

TriangleArray: Result > java TriangleArray 0 00 000 0000 00000 000000 0000000 00000000 000000000 0000000000 55 coreservlets.com custom onsite training Math Routines Slides 2016 Marty Hall, hall@coreservlets.com For additional materials, please see http://www.coreservlets.com/. The Java tutorial section contains complete source code for all examples in this tutorial series, plus exercises and exercise solutions for each topic.

Basic Mathematical Operators +, -, *, /, % Addition, subtraction, multiplication, division, mod mod means remainder, so 3 % 2 is 1. num++, ++num Means add one to (after/before returning value) int num = 3; num++; // num is now 4 Usage For brevity and tradition, but no performance benefit over simple addition Warning Be careful with / on int and long variables (rounds off) 57 58 Basic Mathematical Methods: Usage Static methods in the Math class So you call Math.cos(...), Math.random(), etc. Most operate on double-precision floating point numbers Examples double eight = Math.pow(2, 3); double almostzero = Math.sin(Math.PI); double randomnum = Math.random(); In the JUnit section, we will cover static imports that let you skip the class name Most developers do not use static imports with the Math class, but a few do. Quick example: import static java.lang.math.*;... double d1 = cos(...); // Instead of Math.cos(...) double d2 = sin(...); // Instead of Math.sin(...) double d3 = random(); // Instead of Math.random(...)

Basic Mathematical Methods Simple operations: Math.pow(), etc. pow (x y ), sqrt ( x), cbrt, exp (e x ), log (log e ), log10 Trig functions: Math.sin(), etc. sin, cos, tan, asin, acos, atan Args are in radians, not degrees, (see todegrees and toradians) Rounding and comparison: Math.round(), etc. round/rint, floor, ceiling, abs, min, max Random numbers: Math.random() Math.random() returns double from 0 inclusive to 1 exclusive. See Random class for more control over randomization. 59 Common Use of Math.random To randomly invoke different operations Especially useful for testing for(int i=0; i<10; i++) { if (Math.random() < 0.5) { dofirstoperation(); // 50% chance else { dosecondoperation(); // 50% chance 60

More Mathematical Options Special constants Double.POSITIVE_INFINITY Double.NEGATIVE_INFINITY Double.NAN Double.MAX_VALUE Double.MIN_VALUE Unlimited precision libraries BigInteger, BigDecimal Contain basic math operations like add, pow, mod, etc. BigInteger also has isprime 61 coreservlets.com custom onsite training Reading Input from the User Slides 2016 Marty Hall, hall@coreservlets.com For additional materials, please see http://www.coreservlets.com/. The Java tutorial section contains complete source code for all examples in this tutorial series, plus exercises and exercise solutions for each topic.

In Real Applications, use GUI Practice: use approaches shown next Command line args JOptionPane Scanner Real life: desktop and phone apps Collect input within Java app using textfields, sliders, dropdown menus, etc. Convert to numeric types with Integer.parseInt, Double.parseDouble, etc. Real life: Web apps (JSF2 and PrimeFaces) Collect input on browser with textfields, sliders, popup calendars, etc. Java will convert automatically for simple types You can set up converters for complex types Details on JSF and PrimeFaces: http://www.coreservlets.com/jsf-tutorial/jsf2/ 63 Reading Strings from Users Option 1: use command-line argument String input = args[0]; First verify that args.length > 0 Option 2: use JOptionPane String input = JOptionPane.showInputDialog("Number:"); Option 3: use Scanner Scanner inputscanner = new Scanner(System.in); String input = inputscanner.next(); 64

Converting Strings to Numbers To int: Integer.parseInt String input =...; int num = Integer.parseInt(input); To double: Double.parseDouble String input =...; double num = Double.parseDouble(input); With Scanner Use scanner.nextint(), scanner.nextdouble() Warning In real life, you must handle the case where the input is not a legal number. Idea shown without explanation in Input1Alt class Try/catch blocks and exception handling covered in the section on simple graphics 65 66 Command-Line Args public class Input1 { public static void main(string[] args) { if (args.length > 1) { int num = Integer.parseInt(args[0]); System.out.println("Your number is " + num); else { System.out.println("No command-line args"); Open command window and navigate to folder containing class > java Input1 7 Your number is 7

Preview of Error Checking (Explained in Section on Simple Graphics) public class Input1Alt { public static void main(string[] args) { if (args.length > 1) { try { int num = Integer.parseInt(args[0]); System.out.println("Your number is " + num); catch(numberformatexception e) { System.out.println("Input is not a number"); else { System.out.println("No command-line arguments"); 67 Open command window and navigate to folder containing class > java Input1Alt seven Input is not a number > java Input1Alt 7 Your number is 7 JOptionPane... (package statement) import javax.swing.*; public class Input2 { public static void main(string[] args) { String input = JOptionPane.showInputDialog("Number:"); int num = Integer.parseInt(input); System.out.println("Your number is " + num); Run from Eclipse (R-click, Run As Java Application), enter 8 in popup window Result in Eclipse Console: Your number is 8 68

Scanner... (package statement) import java.util.*; public class Input3 { public static void main(string[] args) { System.out.print("Number: "); Scanner inputscanner = new Scanner(System.in); int num = inputscanner.nextint(); System.out.println("Your number is " + num); Run from Eclipse (R-click, Run As Java Application), enter 9 after Number: prompt in Eclipse Console. Next line: Your number is 9 69 coreservlets.com custom onsite training Wrap-Up Slides 2016 Marty Hall, hall@coreservlets.com For additional materials, please see http://www.coreservlets.com/. The Java tutorial section contains complete source code for all examples in this tutorial series, plus exercises and exercise solutions for each topic.

Basics 71 Summary Loops, conditional statements, and array access is similar to C/C++ But additional for each loop: for(string s: somestrings) { Indent your code for readability String is a real class in Java Use equals, not ==, to compare strings Allocate arrays in one step or in two steps If two steps, loop down array and supply values Use Math.blah() for simple math operations Math.random, Math.sin, Math.cos, Math.pow, etc. Simple input from command window Use command line for strings supplied at program startup Use JOptionPane or Scanner to read values after prompts Neither is very important for most real-life applications coreservlets.com custom onsite training Questions? More info: http://courses.coreservlets.com/course-materials/java.html General Java programming tutorial http://www.coreservlets.com/java-8-tutorial/ Java 8 tutorial http://courses.coreservlets.com/java-training.html Customized Java training courses, at public venues or onsite at your organization http://coreservlets.com/ JSF 2, PrimeFaces, Java 7 or 8, Ajax, jquery, Hadoop, RESTful Web Services, Android, HTML5, Spring, Hibernate, Servlets, JSP, GWT, and other Java EE training Many additional free tutorials at coreservlets.com (JSF, Android, Ajax, Hadoop, and lots more) Slides 2016 Marty Hall, hall@coreservlets.com For additional materials, please see http://www.coreservlets.com/. The Java tutorial section contains complete source code for all examples in this tutorial series, plus exercises and exercise solutions for each topic.