Download presentation
Presentation is loading. Please wait.
Published byChristian Bradford Modified over 9 years ago
1
SOFTWARE AND PROGRAMMING 1 In-class open-book TEST1 on 6/02 Lab SH131: (from 6.00 - 7.20) Ms Mihaela Cocea Room 103.2 London Knowledge Lab 23-29 Emerald Street Tel.: 020 7763 2114 E-mail: mihaela@dcs.bbk.ac.uk
2
2 Test1 6/2/8 awareness Open-book in-class Test1 6/2/8 subjects: Variable: type, declaration, initialisation Expression Loop for Loop while if( )… else if( )... else Method
3
3 Contents Ticket Machine with a menu and main method Working over a menu: –while and –if/else if/else Using TextIO/Scanner for input Constructor Static and instance variables
4
4 Ticket Machine Imitates issuing flat-rate tickets Three variables needed: price – for ticket price balance – for the user’s money total – for money received from customers Three assessor methods for getting each of the variables Three mutator methods for - entering customer’s money - printing/issuing a ticket - getting refunded
5
5 Blue-J Ticket Machine: a review Shortcomings: No main method – cannot be used in JDK Input only with BlueJ capabilities, not with JDK Methods not ordered – refund may occur before a ticket has been issued - can be addressed by organising a dialog or menu
6
6 Organising a menu //--- ‘menu’ method for choosing action----------- public static int menu() { TextIO.putln(); TextIO.putln("Please enter a number: "); TextIO.putln(" 0 - to quit "); TextIO.putln(" 1 - to get a ticket price "); TextIO.putln(" 2 - to put money and get a ticket "); TextIO.putln(" 3 - to get refunded "); TextIO.putln(" 4 - to get statistics "); int action=TextIO.getInt(); return action; }
7
7 Main method using menu: right? public static void main(String[ ] args){ int MeItem=1; while (MeItem!=0){ MeItem=menu();// a method if (MeItem==1){ int pp=getPrice(); // a method System.out.println("The ticket price is "+pp+" pence ");} else if (MeItem==2) { System.out.println("Please key in the money inserted, in pence"); int money.insert=TextIO.getInt(); insertMoney(money_insert); printTicket();} else if (MeItem==3) { int refund=refundBalance(); System.out.println("Please take your refund " + refund);} else {int tt=getTotal(); int bb=getBalance(); System.out.println("The total for tickets: "+tt);} }//end of while for choosing action } //end of main
8
8 Main method using menu: WRONG! WHY? There are some deficiencies in the program: no difference between option 4 and !(1 | 2 | 3) – but this wouldn’t make the class fail Because main method is static, but other methods and variables are not A Java Commandment : You shalt not utilise non static items in a static method! What to do? Either –Make other methods and variables static too; this works but may be in odds with flexibility considerations –Introduce an instance of the class into main method – make the constructor working – and use all methods and variables from the instance
9
9 Main method using menu: Right (I) public static void main(String[ ] args){ System.out.println("Please enter a ticket price "); int pi=TextIO.getInt(); TM atm=new TM(pi); int MeItem=1; while (MeItem!=0){ MeItem=menu();// a method if (MeItem==1){ int pp=atm.getPrice(); // a method System.out.println("Ticket price is "+pp);}
10
10 Main method using menu: Right (II) else if (MeItem==2) { System.out.println(“Key in the money inserted in pence"); int money_insert=TextIO.getInt(); atm.insertMoney(money_insert); atm.printTicket();} else if (MeItem==3) { int refund=atm.refundBalance(); System.out.println("Please take your refund " + refund);} else {int tt=atm.getTotal(); int bb=atm.getBalance(); System.out.println("The total for tickets: "+tt);} }//end of loop while for choosing action } //end of main
11
11 Loop for : reminder I General form: for(CounterInit; Test; CounterUpdate) { } Three parts: for – name of the loop ( ) – control of the loop { } – computations at each loop’s iteration Needs to be remembered: Process of computation is controlled in ( ) – it is only from here an exit from the loop is possible (at Test=False) Computations are performed in { }; when finished, the process goes back to ( )
12
12 Loop for : reminder II Task: Print integers from 0 to 10 in one line for(int ii=0; ii<=10; ii++) {System.out.print(ii + “ ”); } If one wants change the number 10 to 15? for(int ii=0; ii<=15; ii++) {System.out.print(ii + “ ”); } Or, more flexible, int lim =15; for(int ii=0; ii<=lim; ii++) {System.out.print(ii + “ ”); }
13
13 Loop for : reminder III Or, even more flexible, with a method int printint(int lim){ for(int ii=0; ii<=lim; ii++) {System.out.print(ii + “ ”); } } //end of method printint printint(15); //calling method at lim=15 Q: Can you find anything wrong in the method printint ? (A: (i) int output type, (ii) should put System.out.println(); in the end) Q: How to modify this if I want 0 5 10 15 … 95 100 printed? (A: Think, or if you don’t want to, use filtering condition ii%5==0 )
14
14 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
15
15 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 } //end of classend Two errors in this code: in lines 1 and 3. Please guess! Answer: no ; and non-static num
16
16 Using a method with Scanner import java.util.* class PrintMDot{ public static void main(String[ ] args){ Scanner scap = new Scanner(System.in); System.out.println(“How many ampersands to print? “); int number=scap.nextInt(); ppp(number); } //end of main static void ppp(int nnn) { for (ik=0; ik<nnn; ik++) System.out.print(‘&’); System.out.println(); } //end of ppp } //end of class - some errors are here too! Try to find
17
17 Constructor Constructor is a special method that –Has the same name as the class –No return type (nor “return”) –Is called with modifier “new” to reserve a memory space for an object of class type (an instance) List of parameters, as well as the block, can be user defined The constructor with no parameters is available by default (like Const(){ }; )
18
18 Static and instance variables Static variable:belongs to its class, and it is shared by all class instances, with the same value Instance variable:a class variable without the “static” modifier, is shared by all class instances, but its values can differ in different instances Local variable: is created within a method or instance in a { } block. Its scope is limited within the block.
19
19 Example (1) public class TesNum { int instVar = 1; static int statVar = 10; TesNum() { System.out.println("test: " + instVar + " and " + statVar); instVar = 7; statVar = 5; } \\ constructor
20
20 Example(2) public static void main(String[] args) { TesNum alpha1 = new TesNum(); alpha1.instVar = 3; alpha1.statVar = 6; //syn. to: TesNum.statVar = 6; TesNum alpha2 = new TesNum(); System.out.println("inst: " + alpha1.instVar + " and " + alpha2.instVar); System.out.println("stat: " + alpha1.statVar + " and " + alpha2.statVar); //System.out.print("mix: " + instVar + " and " + statVar); wrong } //end of main } //end of class
21
21 What’s going on in TesNum instVar statVar 1. With the class: 1 (in class) 10 2. At the constructo r in class (virtual): 75 3. After alpha1 :Constructor prints:1 and 10 3 (within alpha1)6 4. After alpha2 :Constructorprints:1 and6 7 (within alpha2)5 5. Method main prints:3 and 7 5 and 5
22
22 A method added: public int SS(int a){ int b=instVar; int sum=0; if (a>b){ //swap a and b int c=b; b=a; a=c;} for(int i=a;i<=b;i++) sum=sum+i; return sum; } // computes the sum of integers from a to b int b1=alpha1.SS(statVar); int b2=alpha2.SS(statVar); System.out.println("sum : " + b1 + " and " + b2);
23
23 Sums to be printed From alpha1: a=5, b=3 The sum: 3+4+5=12, that is, b1=12 From alpha2: a=5, b=7 The sum: 5+6+7=18, that is, b2=18 The print: sum: 12 and 18
24
24 References to object variables and methods Examples from TesNum alpha1.statVar alpha2.instVar TesNum.statVar from TesNMod alpha1.SS(statVar)
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.