@@ -6,9 +6,9 @@ import java.util.concurrent.ThreadLocalRandom;
class runLabs {
class runLabs {
public static void main(String[] args) {
public static void main(String[] args) {
new Lab4();
new Lab4();
new Lab5();
new Lab7 ();
new Lab6 ();
// new Lab5();
// new Lab6 ();
// new Lab7 ();
}
}
}
}
@@ -74,7 +74,7 @@ class Lab {
class Lab4 extends Lab {
class Lab4 extends Lab {
public Lab4() {
public Lab4() {
super(4);
super(4);
ex44();
// ex44();
ex46();
ex46();
}
}
@@ -147,8 +147,7 @@ class Lab4 extends Lab {
*
*
* Write a program that can calculate how many whole years old someone is from
* Write a program that can calculate how many whole years old someone is from
* today’s date and their date of birth. You could store each date as three
* today’s date and their date of birth. You could store each date as three
* integers (day,
* month, year)
* integers (day, month, year)
*/
*/
public static void ex46() {
public static void ex46() {
String labSection = "4.6";
String labSection = "4.6";
@@ -164,15 +163,40 @@ class Lab4 extends Lab {
System.out.println(String.format(
System.out.println(String.format(
"DOB 1:\t%s (difference:\t%d years)",
"DOB 1:\t%s (difference:\t%d years)",
dob1.getTime(),
dob1.getTime(),
yearDifference (today, dob1)));
yearsOld (today, dob1)));
Calendar dob2 = Calendar.getInstance();
Calendar dob2 = Calendar.getInstance();
dob2.set(1994, 12 , 22);
dob2.set(1994, 11 , 22);
System.out.println(String.format(
System.out.println(String.format(
"DOB 2:\t%s (difference:\t%d years)",
"DOB 2:\t%s (difference:\t%d years)",
dob2.getTime(),
dob2.getTime(),
yearDifference(today, dob2)));
yearsOld(today, dob2)));
Calendar dob3 = Calendar.getInstance();
dob3.set(2000, 8, 19); // 23 years old
System.out.println(String.format(
"DOB 3:\t%s (difference:\t%d years)",
dob3.getTime(),
yearsOld(today, dob3)));
Calendar dob4 = Calendar.getInstance();
dob4.set(2000, 8, 20); // 23 years old
System.out.println(String.format(
"DOB 4:\t%s (difference:\t%d years)",
dob4.getTime(),
yearsOld(today, dob4)));
Calendar dob5 = Calendar.getInstance();
dob5.set(2000, 8, 21); // 22 years old
System.out.println(String.format(
"DOB 5:\t%s (difference:\t%d years)",
dob5.getTime(),
yearsOld(today, dob5)));
}
}
public static boolean isLeap(int year) {
public static boolean isLeap(int year) {
@@ -208,10 +232,25 @@ class Lab4 extends Lab {
}
}
}
}
public static int yearDifference(Calendar date1, Calendar date2 )
public static int yearsOld(Calendar laterDate, Calendar earlierDate )
{
{
return (int) Math.abs(date1.get(Calendar.YEAR) -
date2.get(Calendar.YEAR)
int birthdayModifier = 0; // we assume they've had their birthday
// we could probably do this with one if, checking DAY_OF_YEARs,
// but since problem spec mentioned months and days we should really
// pay attention to those
if (earlierDate.get(Calendar.MONTH) > laterDate.get(Calendar.MONTH)) {
// ie 8 (August) < 9 (September)
birthdayModifier = -1; // not had their birthday yet so take 1 year off difference
} else if (earlierDate.get(Calendar.MONTH) == laterDate.get(Calendar.MONTH)) {
if (earlierDate.get(Calendar.DAY_OF_MONTH) > laterDate.get(Calendar.DAY_OF_MONTH)) {
birthdayModifier = -1;
}
}
return (int) Math.abs(laterDate.get(Calendar.YEAR) -
earlierDate.get(Calendar.YEAR) +
birthdayModifier
);
);
}
}
}
}
@@ -222,7 +261,10 @@ class Lab4 extends Lab {
class Lab5 extends Lab {
class Lab5 extends Lab {
public Lab5() {
public Lab5() {
super(5);
super(5);
new five1();
// new five1();
// new five5();
// new five6();
new five7();
}
}
class five1 extends Exercise {
class five1 extends Exercise {
@@ -235,12 +277,97 @@ class Lab5 extends Lab {
*/
*/
public five1() {
public five1() {
super(1);
super(1);
System.out.println(String.format("TBC"));
// Scanner keyboard = new Scanner(System.in);
// System.out.println("Please enter your name, followed by the return key?");
// String userEntry = keyboard.nextLine();
// System.out.println("Hello " + userEntry);
// System.out.println(String.format("%s", keyboard));
Scanner keyboard = new Scanner(System.in);
System.out.println("Please enter your name, followed by the return key?");
String userEntry = keyboard.nextLine();
System.out.println("Hello " + userEntry);
System.out.println(String.format("%s", keyboard));
System.out.println("Please enter your age");
int userAge = keyboard.nextInt();
// keyboard.nextLine();
System.out.println("You are " + userAge + " years old");
System.out.println("What is your favourite colour?");
String col = keyboard.nextLine();
}
}
/**
* Prompt for input and summarise a circle
*
*/
class five5 extends Exercise {
public five5() {
super(5);
userCircles();
}
public void userCircles() {
Scanner kbIn = new Scanner(System.in);
System.out.println(String.format("Please supply a radius, that I might describe you a circle"));
double radius = kbIn.nextDouble();
kbIn.nextLine();
summariseCircle(radius);
kbIn.close();
}
public void summariseCircle(double radius) {
System.out.println(String.format("A circle with radius %.2f has circumference %.2f and radius %.2f",
radius, compCircumference(radius), compArea(radius)));
}
public double compCircumference(double radius) {
return (2 * Math.PI * radius);
}
public double compArea(double radius) {
return (Math.PI * Math.pow(radius, 2));
}
}
/**
* {@link Scanner} understanding - actually process input
*
*/
class five6 extends Exercise {
public five6() {
super(6);
getNameAndAge();
}
public void getNameAndAge() {
String userName;
int userAge;
Scanner kbIn = new Scanner(System.in);
System.out.println(String.format("Please enter your name and age separated by a space"));
String userInput = kbIn.nextLine();
Scanner inputOps = new Scanner(userInput);
userName = inputOps.next();
// TOASK -- is this what 'add an extra line that fixes this problem' was going for?
while (!inputOps.hasNextInt()) {
userName += " " + inputOps.next();
}
if (inputOps.hasNextInt()) {
userAge = inputOps.nextInt();
} else {
userAge = 0;
}
System.out.println(String.format("Your name is %s and your age is %d",
userName, userAge));
kbIn.close();
inputOps.close();
}
}
/**
* Get DOB from user input and calculate age using {@link Lab4.ex46()}
*
*/
class five7 extends Exercise {
public five7() {
super(7);
}
}
}
}
}
}