System.out.println() - Department of Computer Science and
Download
Report
Transcript 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]
Advice: setting a path to Java
• Right-click on "My Computer", choose
Properties, then Advanced tab; hit button
for Environment Variables
• Set a new variable called Path with the
value
"C:\Program Files\Java\jdk1.5.0_04\bin"
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 a while loop:
Structure: initialisation; while(test){…, update,
…}
int a=1;
int b=6;
while(a<=b){
a=a+2;
b=b-2;
System.out.println(“a = ” + a + “ and b = ” + b);
}
1. What this loop does?
2. Can it be rewritten in the for format?
Homework
9
What the while loop does:
int a=1;
int b=6;
while(a<=b){
a=a+2;
b=b-2;
System.out.println(“a = ” + a + “ and b = ” + b);
}
This loop prints
a = 3 and b = 4
a = 5 and b = 2
10
Double loop (1)
class AddTable {
public static void main(String[ ] args){
int sum;
for (int ite1=1;ite1<3; ite1++) {//loop1
for (int ite2=1;ite2<5; ite2++) {//loop2
sum=ite1+ite2;
System.out.print(sum +" ");}//loop2
System.out.println();}//loop1
} //method main ends
} //class ends
11
Double loop (2)
This prints
2 3 4 5
3 4 5 6
Why?
A better printing ? Such as:
Addition Table
+1 2 3 4
12 3 4 5
23 4 5 6
12
Double loop (3)
class AddTable {
public static void main (String[] args)
{int sum;
for (int i1=1;i1<3; i1++){
System.out.print(i1 + " ! ");
for (int i2=1;i2<5; i2++){
sum=i1+i2;
System.out.print(sum +" ");}
System.out.println();}
}
}
13
Double loop (4): with method
class AddTableMeth {
public static void main (String[] args)
{ PrintTable(2,4); }\\end main
public static PrinTable(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();}
14
Double loop (5)
produces
1! 2 3 4 5
2! 3 4 5 6
3! 4 5 6 7
Q: How to make it look better? (See
printing method in TicketMachine.)
Q: How to modify it to other ranges?
Q: Make a MULTIPLICATION TABLE?
15
Java branching structure :
if( ) … else if( ) … else if( ) … else
if(BooleanExpr1)
Statement1; (e.g. Tax=2;)
else if(BooleanExpr2)
Statement2; (e.g. Tax=18;)
else
Statement3; (e.g. Tax=7;)
• Note: No (Boolean Expression) at else
16
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.
17
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;
18
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?
19
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
20
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.
21
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 = uInputuInput; //why product?
System.out.print("The square is "+Squared);
} // end of main()
} //end of class PrintSquare
22
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 23
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
24
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 or double) from keyboard
25
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
26
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
27