and System.out.println(). - Department of Computer Science and

Download Report

Transcript and System.out.println(). - Department of Computer Science and

SOFTWARE AND PROGRAMMING 1
O
Lecture: MB33
7:30-9:00 (except 11&18.01.06)
Lab: B43, MB321, MB536
6:00-7:30 (from 25.01.05)
[each student must have obtained access to Birkbeck computing]
Lab MB536: students whose family names fall in A-F
Instructor:
Mr Zheng Zhu
LKL, tel. 020 7763 2115
E-mail: [email protected]
Lab G03 Clore Centre: students whose family names fall in G-Ka
Instructor:
Mrs Jenny Hu
SCSIS, room NG26, tel. 020 7631 6726
E-mail: [email protected]
Lab 12 Gordon Sq. 43: students whose family names fall in Ke -Y
Instructor:
Prof. Boris Mirkin
SCSIS, room 111, tel. 020 7631 6746
E-mail: [email protected]
Subjects
•
•
•
•
TicketMachine
TextIO and Scanner class to key in data
String class
Math class
2
Test1 8/2/6 awareness
Test1 will be carried out in MB33 during the
lecture time (not lab time) from 7:30, 8/2/06
Subjects:
• Variable: type, declaration, initialisation
• Expression: arithmetic, Boolean
• Loop for
• Loop while
• if( )… else if( ) ... else
• Simple method
3
What we want of a Ticket Machine
TicketMachine code: to model a ticket
machine that issues flat-fare tickets.
The functionality:
- accepting fare
- calculating the amount to pay back
- calculating the cumulative pay
- issuing tickets
- informing of the price and accumulated
pay
Instances may have different prices 4
Coding Ticket Machine
Principle: EACH function should be done with a specific
variable/method
Functions:
- differing instances (constructor)
- different pricing (var: price)
- accepting fare (var: balance)
- calculating the cumulative pay (var: total)
- calculating the money back (diff = balance-price)
- issuing tickets (method for printing a ticket)
- informing of the price and accumulated pay (methods for
each)
5
Ticket Machine (1)
/* * TicketMachine models a ticket machine that issues
* flat-fare tickets. */
public class TicketMachine{
private int price;
private int balance;
private int total;
public TicketMachine(int ticketCost) //constructor
{ price = ticketCost;
balance = 0;
total = 0; }
public int getPrice()
{
return price; }
public int getBalance()
{ return balance; }
public int getTotal()
6
{ return total; } // see next page for continuation
Ticket Machine (2)
// TicketMachine’s continuation
public void insertMoney(int amount)
{
if(amount > 0)
balance = balance + amount;
else {
System.out.println("Use a positive amount: " +
amount);
}
}
public int refundBalance()
{ int amountToRefund;
amountToRefund = balance;
balance = 0;
return amountToRefund;
}
// continued on the next page
7
Ticket Machine (3)
// TicketMachine’s end
public void printTicket()
{
if(balance >= price) {
// Simulate the printing of a ticket.
System.out.println("##################");
System.out.println("# The BlueJ Line");
System.out.println("# Ticket");
System.out.println("# " + price + " pence.");
System.out.println("##################");
System.out.println();
total = total + price; // Update the total
balance = balance - price; // Update the balance
}
else { System.out.println("You must insert at least: " +
(price - balance) + " more pence."); }
}
}//end of class
8
Example of branching(1)
Problem: calculate income tax
Algorithm (Input: Income, Output: Tax):
When the salary is less than 10000, there is no
tax.
The tax is 15% on the amount earned over 10000
up to 50000.
Any money earned over 50000 are taxed at 40%,
that is, they pay 6000, the tax at 50000, plus
the 40% added from the earnings over 50000.
9
Example of branching(2)
If()… :
int Salary;
int Tax=0;
TextIO.putln("Input your salary ");
Salary=TextIO.getInt(); //TextIO – a class to be
// put into the class’ directory
if ((Salary > 10000)&&(Salary<=50000))
Tax=(Salary-10000)*15/100;
if (Salary>50000)
Tax=(Salary-50000)*40/100 + 6000;
10
Example of branching(3)
If()…else if()…else (preferable):
int Salary;
int Tax;
if (Salary<=10000)
Tax=0;
else if (Salary<=50000)
Tax=(Salary-10000)*15/100;
else
Tax=(Salary-50000)*40/100 + 6000;
• Q: What this would produce for Salary=15777?
11
Method for Tax calculation
Method TC with input/parameter – Salary; output - Tax
public float TC(int Salary) {
float Tax;
if (Salary<=10000)
Tax=0;
else if (Salary<=50000)
Tax=(Salary-10000)*15/100;
else
Tax=(Salary-50000)*40/100 + 6000;
return Tax;}
Application:
int mywages=15777;
float mytax=TC(mywages); // would assign 866.55 to mytax
12
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.
13
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
14
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 15
Input with Scanner 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
16
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
- declare an instance of Scanner
- use it for prompting the user to key in
data (of a specified data type, preferably
int or double or String) with a method:
nextInt() or nextDouble() or next()
17
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 (ik=0; ik<num; ik++)
System.out.print(‘.’);
System.out.println();
} \\end of main
} \\end of class
18
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
19
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
String aGreeting = “Hello”;
20
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 will discard
the unused strings
• It is impossible to make a simple comparison of Strings;
thus a number of methods are:
– 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.
21
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!”;
What is ss.charAt(3)? ss.charAt(7)? ss.charAt(17)?
In respect, ‘k’, ‘ ’ , and error]
22
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”
23
Class Math
Math.pi
 =3.14…, the ratio of the
circumference to its diameter
Math.abs(a)
Math.log(a)
Math.sqrt(a)
a if a >= 0, or -a if a < 0
the natural logarithm
(base e) of a
square root of a
Math.pow(a,b)
ab ,
if b is
integer then ab =aa…a (b times)
24
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?
25
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);
26
Casting a dice question
How to generate a random integer
between 10 and 20 inclusive?
Answer:
int rdt= (int) (11*Math.random()+10);
27