Variables in Java Part 2 Recall the “int” Data Types When you divide one integer by another – you always get an integer as an answer The answer always rounds DOWN (it ignores the remainder) int x=27; int y=7; int answer=x/y; The answer is 3 and 6/7 - but it is calculated as 3 ICS-3M1 - Mr. Martens - Variables Part 2 Sometimes You Want the Remainder On the last slide, you saw that 27/7 = 3-R6 There are 2 parts to the answer the “3” and the remainder of “6” Most languages have the ability to extract only the remainder part – this is called the “modulus” – and in Java the “%” is used. So ... 27/7=3 ... and 27%7=6 ICS-3M1 - Mr. Martens - Variables Part 2 More Modulus Examples x y x/y x%y x * (x % y) 10 7 1 3 30 10 3 3 1 10 6 12 0 6 36 21 4 5 1 21 65 1 65 0 0 84 8 10 4 336 33 12 2 9 297 ICS-3M1 - Mr. Martens - Variables Part 2 Using Constants in Java A constant is a value that never changes during the life of a program (opposite of variable) In Java, we use the keyword “final” in front of a declaration to change it from a variable into a constant: final double PI = 3.14; final double PST = 0.08; ICS-3M1 - Mr. Martens - Variables Part 2 A Constant Example It is also a customary practice to CAPITALIZE constants so that they stand out from the variables ICS-3M1 - Mr. Martens - Variables Part 2 Formatting Numbers To format numbers you have to “import” a part of Java that deals with formatting To get this one going, we need some numbers to format ICS-3M1 - Mr. Martens - Variables Part 2 Number Format, Continued Next, we will declare 3 NumberFormat “objects”, each with a slightly different job The 3 objects have been named according to the kind of format they will perform This isn’t mandatory, but it is just good programming practice. ICS-3M1 - Mr. Martens - Variables Part 2 The Rest of the Program Each NumberFormat object has a “format” method that actually does the formatting: Here is the output of the program ICS-3M1 - Mr. Martens - Variables Part 2 Here is the Entire Program Import the NumberFormat class Declare some variables with numbers Create 3 NumberFormat objects Use the format method to format ICS-3M1 - Mr. Martens - Variables Part 2 The 3 Types of Programming Errors Syntax error. This type of error is detected when you try to compile your program. It is a typing error made by the programmer: ICS-3M1 - Mr. Martens - Variables Part 2 The 3 Types of Programming Errors Logic Error. These are harder to catch. There is nothing wrong with the way you TYPED your code so it is not detected by the compiler. But, when you run the program, you seem to get unexpected results ICS-3M1 - Mr. Martens - Variables Part 2 The 3 Types of Programming Errors Runtime Error. The code is typed correctly, but then something happens during the running of the program that causes it to crash Nothing seems wrong with this program when you run it .. ICS-3M1 - Mr. Martens - Variables Part 2 The 3 Types of Programming Errors But, we could cause the program to crash while its running if we do some ‘funny stuff’: Java doesn’t like it when we try to divide by 0 ICS-3M1 - Mr. Martens - Variables Part 2 Runtime Errors are called “Exceptions” Like everything else in Java, Exceptions are also grouped into different “objects” Java contains a whole collection of the various types of errors / exceptions that can occur during the running of a program. When a runtime error occurs, Java will stop the program and report to you what exception has happened ICS-3M1 - Mr. Martens - Variables Part 2 Case Study – The Birthday Puzzle Write down the month you were born in (as a number) i.e. Jan=1, Feb = 2, etc Multiply that number by 5 Add another 6 to your total Multiply the new number by 4 Now add another 9 (almost done) Next, multiply the new number by 5 Lastly add your birth DATE (3rd, 4th, 21st) to your final total ICS-3M1 - Mr. Martens - Variables Part 2 Now – tell me your number Give me the number you ended up with and I can tell when your birthday is... Who dares to challenge the great, psychic, Mr. Martens?!?!?!? Well?????????? ICS-3M1 - Mr. Martens - Variables Part 2 A Good Magician Never Reveals His START Secrets Lucky for you, I’m not a good magician. Here is a flowchart that breaks down my process to get your birthday Show Rules to User Ask for number from user Subtract 165 from number Birth Month=number / 100 Birth Day=number % 100 Ex – Your birthday is 4/17 Tell user their birthday STOP ICS-3M1 - Mr. Martens - Variables Part 2 Now, Write the Java Program Based on the flowchart on the previous slide, write the program Be sure to include several print statements at the beginning to explain to the user how they are to calculate the number they are to “punch in” to the program Use comments -> // within your code to explain what the code is doing. ICS-3M1 - Mr. Martens - Variables Part 2