and System.out.println().

Download Report

Transcript and System.out.println().

SOFTWARE AND PROGRAMMING 1
Lecture 2, 2010
Labs start 20.01.2010:
DCSIS room 131
SH room B29
LAB
Lecture
6.00 - 7.30
7.30 - 9.00
EACH student
must have obtained access
to Birkbeck computing by 20.01.10 –
otherwise no use in the lab
Instructor: Prof. Boris Mirkin
SCSIS, room 111, tel. 020 7631 6746
E-mail: [email protected]
Course Assistant:
Webpages
Course web page at BlackBoard:
http://www.ble. ac.uk
Please check it regularly. It will be
used for announcements and
assignments.
Another page, at an open-to-all website, functions with relevant
materials too:
www.dcs.bbk.ac.uk/~mirkin/sp109
2
Concepts from lecture 1
• Compiler (javac.exe) and Interpreter
(java.exe), should be on system’s path
• JDK and BlueJ for running Java
• Class (template) and Object (its
instantiation); every Java program
must be a class
• Variable and its type; primitive types
• Method (input-to-output operation)
and its Parameters (inputs - with their
types at method’s declaration)
3
Concepts for tonight
•
•
•
•
•
•
Casting of primitive data types
Boolean expression
Loops for, while
Choice structure if/elseif/else
Strings
Input
• Using TextIO class
• Using Scanner
4
Unifying type
Look at
A=6.0+5
What type of A can be?
Can A be Integer?
No way.
Unifying type: float or double
5
Type casting
The unifying type can be overridden by
explicitly stating a type cast:
• Place the desired type result in parentheses
followed by the variable or constant to be cast
(int) 6.0+7  13
Example:
int bankbalance=931786;
float weeklybudget = (float) bankbalance /4;
Another way:
float weeklybudget = bankbalance /4.0;
6
Boolean expressions: true or false
•
•
|, ||
or
5==(1+3+7) | a+b==b+a
•
•
•
•
•
E1
0
1
0
1
E2
0
0
1
1
E1|E2
0
1
1
1
• &, &&
and
• !
not
• ==
equal to
• <
less than
• >
greater than
• <=
< or ==
• >=
> or ==
Always after arithmetic; If not sure, use
parentheses (…): first performed inside
7
Condition
int x=2;
x+4*2 > 5
true
at what x is this false?
int x=3;
int y=1;
x-4 == 1.5*(y+2)
can this be true?
8
Precedence table
9
Loop for
for(int var=1;var<=st;var=var+1)
{do operations depending on var}
var=var+1 is
var++
• Two types of parentheses: (loop control) and {body
to do operations}
• Three items in control ( ):
– initialising the counting variable once,
– variable update, and
– stop-condition
• Exit from the loop – only from within control ( … )
10
Loop for
for(int var=1;var<=st;var++) % no ‘;’ here!!!
{do operations depending on var}
Two types of parentheses: (loop specified) and {body to do}
• The expression in loop control “()” consists of three items in this order
– initialising the counting variable once
– stop-condition
– variable update
• First,
– var is initialised,
– stop-condition is tested;
• if true, block {} is executed,
• if no, the program proceeds further on, after the block { }
– control returns to ( )
• After control returns to ( ),
– var is updated;
– stop-condition is checked;
• if true, block {} is executed, then control returns to ( ),
• if no, the program proceeds further on, after the block { }
11
Loop while: less rigid
for(init; test; update){ statements }
All three in the parentheses refer to a counter that is
initialised, updated and tested over reaching
the pre-specified threshold
Structure of while loop contains same elements – init, test
and update – but less rigid, not necessarily based on
counter but rather on a condition; while’s structure:
init;
while(test){ statements;
update }
Similar elements: ( ), { }, initialisation, test condition
(not necessarily involving the counter!), and update
12
Example:
for (int K = 10; K > 1 ; K--) {
//k-- is k=k-1;
if (K < 7)
{ break; } // Stops execution of the loop
else
System.out.print(“ ” + K);
}
1. What this loop does?
2. Can it be rewritten in the while format?
13
Example: answer 1
for (int K = 10; K > 1 ; K--) {
if (K < 7)
{ break; }
else
{ System.out.print(“ ” + K);}
}
What this loop does?
Prints 10 9 8 7
14
Example: answer 2
int K = 10;
while(K >1) {
if (K< 7)
break;
else
System.out.print(“ ” + K);
K--;
}
15
BlueJ HelloWorld N times
public class HelloN {
int number;
\\ variable declared
public void go()
{ System.out.println("Hello, world"); }
public HelloN(int howmany)
{number=howmany; } \\constr-r to initialise an
object
public void prrt()
\\printing number times
{ for(int i=1;i<=number;i++) \\loop
go();
16
Three branching structures
(1) Do under a condition; otherwise do
nothing [if… structure]
if(BooleanExpr) Statement or
if(BooleanExpr) {Statements}
(2) Do under a condition; otherwise do
differently [if…else… structure]
if(BooleanExpr)
{Statements1}
else
{Statements2}
17
Java branching structure (3):
(3) Several conditions to do differently
[if…else if… … else if… else structure]
if(BoolExpr1)
Statement1;
else if(BoolExpr2)\\and not BoolExpr1
Statement2;
else \\ (not BoolExpr1) and (not BoolExpr2)
Statement3;
• Note NO Bool. Exp at else
18
If/else example
• Ticket’s price is £5, 60+ concession £3, children 12 or
less go for free
• Need a variable for the age, say YourAge, and the
price, say Price;
• The fragment can be as:
if (YourAge<=12)
Price=0;
else if (YourAge<=60)
Price=5;
else //note NO CONDITION to be put here
Price=3;
19
Statements
•
•
•
•
•
Assignment (followed by ;)
Method call (followed by ;)
if/ifelse/else (block, no ;)
for/while loop (block, no ;)
break (followed by ;)
20
Double loop with method
class ATM {
public static void main (String[] args)
{ PrTab(2,4); }\\end main
static PrTab(int rowsize, int columnsize){
for (int i1=1;i1<rowsize+1; i1++){
System.out.print(i1 + " ! ");
for (int i2=1;i2<columnsize+1; i2++){
sum=i1+i2;
System.out.print(sum +" ");}
System.out.println();}
}
}\\end class
21
This produces:
produces
1! 2 3 4 5
2! 3 4 5 6
3! 4 5 6 7
Q: How to make the print look better?
(See printing method in TicketMachine
– next time.)
Q: How to modify table to other ranges?
Q: Make a MULTIPLICATION TABLE?
22
Input/Output TextIO class
TextIO.java, added to the directory that
contains your class, eases input of data
from the keyboard
To input an integer:
int UsInput = TextIO.getInt();
Computer will wait for the user to type in
an integer value to UsInput.
23
Input/Output TextIO class (2)
public class PrintSquare {
public static void main(String[] args) {
int uInput;
// the number to be input by the user
int Squared;
// the userInput, multiplied by itself
System.out.print("Please type a number: ");
uInput = TextIO.getInt();
Squared = uInputuInput; //why product?
System.out.print("The square is "+Squared);
} // end of main()
} //end of class PrintSquare
24
Input/Output TextIO class (3)
Other TextIO methods:
b = TextIO.getByte(); // value read is a byte
i = TextIO.getShort(); // value read is a short
j = TextIO.getInt(); // value read is an int
k = TextIO.getLong(); // value read is a long
x = TextIO.getFloat(); // value read is a float
y = TextIO.getDouble(); // value read is a double
a = TextIO.getBoolean(); // value read is a
boolean
c = TextIO.getChar(); // value read is a char
w = TextIO.getWord(); // value read is a String
s = TextIO.getln(); // value read is a String 25
Input/Output in Java
The TextIO class contains static member
methods TextIO.put() and TextIO.putln(),
the same as System.out.print() and
System.out.println().
TextIO can only be used in a program if
TextIO is available to that program. It is
not built into Java.
From Java 1.5.0 version on, there is a
similar class in Systems.in:
Scanner
26
Input with Scanner class(1)
From Java 1.5.0 version on, there is a
similar class in System.in.
Scanner(System.in):
- import the java.util package in a line
preceding the class,
- then declare an instance of Scanner and
- then use it for prompting the user to
enter data (of a specified data type,
preferably int, nextInt(), or double,
nextDouble()) from keyboard
27
Input with Scanner class (2)
import java.util.*
class PrintDot{
int num=0;
public static void main(String[ ] args){
Scanner scap = new Scanner(System.in);
System.out.println(“How many dots to print? “);
num=scap.nextInt();
for (int ik=0; ik<num; ik++)
System.out.print(‘.’);
System.out.println();
} \\end of main
} \\end of class [footnote: will not compile!!!]
28
Using method with Scanner
import java.util.*
class PrintDot{
int number=0;
public static void main(String[ ] args){
Scanner scap = new Scanner(System.in);
System.out.println(“How many ampersands to print? “);
number=scap.nextInt();
ppp(number);
} \\end of main
void ppp(nnn)
{ for (ik=0; ik<nnn; ik++)
System.out.print(‘&’);
System.out.println();
} \\end of ppp
} \\end of class
29
Strings(1)
Declaring a String Object
String variable
• An object of the class String
– The class String is defined in java.lang.String and is
automatically imported into every program
Create a String object by using the keyword new and
the String constructor method
•
String aGreeting = new String(“Hello”);
or by assigning an actual string
String aGreeting = “Hello”;
30
Strings(2)
Comparing String Values
• Strings are never actually changed; instead new Strings are
created and String variables hold the new addresses; A part
of the Java system called the garbage collector discards the
unused strings
• Strings are not numbers; arithmetic and logic Java
operations are not applicable. To compare Strings, a number
of methods are utilised:
– equals() method
if s1 and s2 are declared and initialised as String:
s1.equals(s2) true if s1 and s2 are exactly the same
sequences of characters
NEVER s1==s2 !!! This is wrong, == applies to
numbers only.
31
Strings(3)
Comparing String Values
Try "HaHaHa ” "haHaHa"
(2 differences)
s1.length()
number of characters in s1
charAt() method requires an integer argument which
indicates the position of the character that the method returns
s1.charAt(N)
N-th character in s1
starting from N=0)
String ss= “Look at you!”;
Q. What is ss.charAt(3)? ss.charAt(7)? ss.charAt(17)?
A. In respect, ‘k’, ‘ ’ , and error]
32
Strings(4)
s1.substring(N,M) part of s1 in positions
N, N+1, ..., M-1 (positions are numbered from 0 !!!)
String ss= “Look at you!”;
What is ss.substring(3,7)?
Concatenation
Concatenation - Joining strings, can be done with
symbol +
“45” + “36” = “4536”
33
Class Math (no need to import)
Math.pi
 =3.14…, the ratio of the
circumference to its diameter
Math.abs(a)
a if a >= 0, or -a if a < 0
Math.log(a)
the natural logarithm
(base e) of number a
square root of number a
Math.sqrt(a)
Math.pow(a,b)
ab ; if b is an integer then
ab =aa…a (b times)
34
Math.random()
pseudorandom number: double within
interval [0.0, 1.0) (zero included, unity
not)
How to use it to generate a random integer
between 1 and 6 (inclusive), to imitate
casting a dice?
35
Casting a dice
double aa=Math.random();
//aa, a real number between 0 and 1
int an= 6*aa; //a real number between 0 and 6
int rand=(int) an;
// whole number between 0 and 5
int randw=rand+1;
// whole number between 1 and 6
The same in one line:
int randw= (int) (6*Math.random()+1);
36
Casting a dice question
How to generate a random integer
between 10 and 20 inclusive?
Answer:
int rdt= (int) (11*Math.random()+10);
Another possibility: using class Random
with
import java.util.Random
37
This is what was covered tonight
•
•
•
•
•
•
•
•
Primitive type casting
Boolean expression
Loop for, while
Double loop
Choice structure if/elseif/else
Input from keyboard classes
String
Math
38