Last active
June 28, 2017 16:54
-
-
Save rjlutz/e29b15aac6ccbd56ae67f1be825853ae to your computer and use it in GitHub Desktop.
Methods (Chapter 6) -- examples from Liang Intro to Java Comprehensive 10e
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.Scanner; | |
public class GreatestCommonDivisorMethod { | |
/** Main method */ | |
public static void main(String[] args) { | |
// Create a Scanner | |
Scanner input = new Scanner(System.in); | |
// Prompt the user to enter two integers | |
System.out.print("Enter first integer: "); | |
int n1 = input.nextInt(); | |
System.out.print("Enter second integer: "); | |
int n2 = input.nextInt(); | |
System.out.println("The greatest common divisor for " + n1 + | |
" and " + n2 + " is " + gcd(n1, n2)); | |
} | |
/** Return the gcd of two integers */ | |
public static int gcd(int n1, int n2) { | |
int gcd = 1; // Initial gcd is 1 | |
int k = 1; // Possible gcd | |
while (k <= n1 && k <= n2) { | |
if (n1 % k == 0 && n2 % k == 0) | |
gcd = k; // Update gcd | |
k++; | |
} | |
return gcd; // Return gcd | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.Scanner; | |
public class Hex2Dec { | |
/** Main method */ | |
public static void main(String[] args) { | |
// Create a Scanner | |
Scanner input = new Scanner(System.in); | |
// Prompt the user to enter a string | |
System.out.print("Enter a hex number: "); | |
String hex = input.nextLine(); | |
System.out.println("The decimal value for hex number " | |
+ hex + " is " + hexToDecimal(hex.toUpperCase())); | |
} | |
public static int hexToDecimal(String hex) { | |
int decimalValue = 0; | |
for (int i = 0; i < hex.length(); i++) { | |
char hexChar = hex.charAt(i); | |
decimalValue = decimalValue * 16 + hexCharToDecimal(hexChar); | |
} | |
return decimalValue; | |
} | |
public static int hexCharToDecimal(char ch) { | |
if (ch >= 'A' && ch <= 'F') | |
return 10 + ch - 'A'; | |
else // ch is '0', '1', ..., or '9' | |
return ch - '0'; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Increment { | |
public static void main(String[] args) { | |
int x = 1; | |
System.out.println("Before the call, x is " + x); | |
increment(x); | |
System.out.println("after the call, x is " + x); | |
} | |
public static void increment(int n) { | |
n++; | |
System.out.println("n inside the method is " + n); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.Scanner; | |
public class PrintCalendar { | |
/** Main method */ | |
public static void main(String[] args) { | |
Scanner input = new Scanner(System.in); | |
// Prompt the user to enter year | |
System.out.print("Enter full year (e.g., 2001): "); | |
int year = input.nextInt(); | |
// Prompt the user to enter month | |
System.out.print("Enter month in number between 1 and 12: "); | |
int month = input.nextInt(); | |
// Print calendar for the month of the year | |
printMonth(year, month); | |
} | |
/** Print the calendar for a month in a year */ | |
public static void printMonth(int year, int month) { | |
// Print the headings of the calendar | |
printMonthTitle(year, month); | |
// Print the body of the calendar | |
printMonthBody(year, month); | |
} | |
/** Print the month title, e.g., May, 1999 */ | |
public static void printMonthTitle(int year, int month) { | |
System.out.println(" " + getMonthName(month) | |
+ " " + year); | |
System.out.println("-----------------------------"); | |
System.out.println(" Sun Mon Tue Wed Thu Fri Sat"); | |
} | |
/** Get the English name for the month */ | |
public static String getMonthName(int month) { | |
String monthName = ""; | |
switch (month) { | |
case 1: monthName = "January"; break; | |
case 2: monthName = "February"; break; | |
case 3: monthName = "March"; break; | |
case 4: monthName = "April"; break; | |
case 5: monthName = "May"; break; | |
case 6: monthName = "June"; break; | |
case 7: monthName = "July"; break; | |
case 8: monthName = "August"; break; | |
case 9: monthName = "September"; break; | |
case 10: monthName = "October"; break; | |
case 11: monthName = "November"; break; | |
case 12: monthName = "December"; | |
} | |
return monthName; | |
} | |
/** Print month body */ | |
public static void printMonthBody(int year, int month) { | |
// Get start day of the week for the first date in the month | |
int startDay = getStartDay(year, month); | |
// Get number of days in the month | |
int numberOfDaysInMonth = getNumberOfDaysInMonth(year, month); | |
// Pad space before the first day of the month | |
int i = 0; | |
for (i = 0; i < startDay; i++) | |
System.out.print(" "); | |
for (i = 1; i <= numberOfDaysInMonth; i++) { | |
System.out.printf("%4d", i); | |
if ((i + startDay) % 7 == 0) | |
System.out.println(); | |
} | |
System.out.println(); | |
} | |
/** Get the start day of month/1/year */ | |
public static int getStartDay(int year, int month) { | |
final int START_DAY_FOR_JAN_1_1800 = 3; | |
// Get total number of days from 1/1/1800 to month/1/year | |
int totalNumberOfDays = getTotalNumberOfDays(year, month); | |
// Return the start day for month/1/year | |
return (totalNumberOfDays + START_DAY_FOR_JAN_1_1800) % 7; | |
} | |
/** Get the total number of days since January 1, 1800 */ | |
public static int getTotalNumberOfDays(int year, int month) { | |
int total = 0; | |
// Get the total days from 1800 to 1/1/year | |
for (int i = 1800; i < year; i++) | |
if (isLeapYear(i)) | |
total = total + 366; | |
else | |
total = total + 365; | |
// Add days from Jan to the month prior to the calendar month | |
for (int i = 1; i < month; i++) | |
total = total + getNumberOfDaysInMonth(year, i); | |
return total; | |
} | |
/** Get the number of days in a month */ | |
public static int getNumberOfDaysInMonth(int year, int month) { | |
if (month == 1 || month == 3 || month == 5 || month == 7 || | |
month == 8 || month == 10 || month == 12) | |
return 31; | |
if (month == 4 || month == 6 || month == 9 || month == 11) | |
return 30; | |
if (month == 2) return isLeapYear(year) ? 29 : 28; | |
return 0; // If month is incorrect | |
} | |
/** Determine if it is a leap year */ | |
public static boolean isLeapYear(int year) { | |
return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.Scanner; | |
public class PrintCalendarSkeleton { | |
/** Main method */ | |
public static void main(String[] args) { | |
Scanner input = new Scanner(System.in); | |
// Prompt the user to enter year | |
System.out.print("Enter full year (e.g., 2001): "); | |
int year = input.nextInt(); | |
// Prompt the user to enter month | |
System.out.print("Enter month as number between 1 and 12: "); | |
int month = input.nextInt(); | |
// Print calendar for the month of the year | |
printMonth(year, month); | |
} | |
/** A stub for printMonth may look like this */ | |
public static void printMonth(int year, int month) { | |
System.out.print(month + " " + year); | |
} | |
/** A stub for printMonthTitle may look like this */ | |
public static void printMonthTitle(int year, int month) { | |
} | |
/** A stub for getMonthBody may look like this */ | |
public static void printMonthBody(int year, int month) { | |
} | |
/** A stub for getMonthName may look like this */ | |
public static String getMonthName(int month) { | |
return "January"; // A dummy value | |
} | |
/** A stub for getMonthName may look like this */ | |
public static int getStartDay(int year, int month) { | |
return 1; // A dummy value | |
} | |
/** A stub for getTotalNumberOfDays may look like this */ | |
public static int getTotalNumberOfDays(int year, int month) { | |
return 10000; // A dummy value | |
} | |
/** A stub for getNumberOfDaysInMonth may look like this */ | |
public static int getNumberOfDaysInMonth(int year, int month) { | |
return 31; // A dummy value | |
} | |
/** A stub for getTotalNumberOfDays may look like this */ | |
public static boolean isLeapYear(int year) { | |
return true; // A dummy value | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class RandomCharacter { | |
/** Generate a random character between ch1 and ch2 */ | |
public static char getRandomCharacter(char ch1, char ch2) { | |
return (char)(ch1 + Math.random() * (ch2 - ch1 + 1)); | |
} | |
/** Generate a random lowercase letter */ | |
public static char getRandomLowerCaseLetter() { | |
return getRandomCharacter('a', 'z'); | |
} | |
/** Generate a random uppercase letter */ | |
public static char getRandomUpperCaseLetter() { | |
return getRandomCharacter('A', 'Z'); | |
} | |
/** Generate a random digit character */ | |
public static char getRandomDigitCharacter() { | |
return getRandomCharacter('0', '9'); | |
} | |
/** Generate a random character */ | |
public static char getRandomCharacter() { | |
return getRandomCharacter('\u0000', '\uFFFF'); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class TestMax { | |
/** Main method */ | |
public static void main(String[] args) { | |
int i = 5; | |
int j = 2; | |
int k = max(i, j); | |
System.out.println("The maximum between " + i + | |
" and " + j + " is " + k); | |
} | |
/** Return the max between two numbers */ | |
public static int max(int num1, int num2) { | |
int result; | |
if (num1 > num2) | |
result = num1; | |
else | |
result = num2; | |
return result; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class TestMethodOverloading { | |
/** Main method */ | |
public static void main(String[] args) { | |
// Invoke the max method with int parameters | |
System.out.println("The maximum of 3 and 4 is " | |
+ max(3, 4)); | |
// Invoke the max method with the double parameters | |
System.out.println("The maximum of 3.0 and 5.4 is " | |
+ max(3.0, 5.4)); | |
// Invoke the max method with three double parameters | |
System.out.println("The maximum of 3.0, 5.4, and 10.14 is " | |
+ max(3.0, 5.4, 10.14)); | |
} | |
/** Return the max of two int values */ | |
public static int max(int num1, int num2) { | |
if (num1 > num2) | |
return num1; | |
else | |
return num2; | |
} | |
/** Find the max of two double values */ | |
public static double max(double num1, double num2) { | |
if (num1 > num2) | |
return num1; | |
else | |
return num2; | |
} | |
/** Return the max of three double values */ | |
public static double max(double num1, double num2, double num3) { | |
return max(max(num1, num2), num3); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class TestPassByValue { | |
/** Main method */ | |
public static void main(String[] args) { | |
// Declare and initialize variables | |
int num1 = 1; | |
int num2 = 2; | |
System.out.println("Before invoking the swap method, num1 is " + | |
num1 + " and num2 is " + num2); | |
// Invoke the swap method to attempt to swap two variables | |
swap(num1, num2); | |
System.out.println("After invoking the swap method, num1 is " + | |
num1 + " and num2 is " + num2); | |
} | |
/** Swap two variables */ | |
public static void swap(int n1, int n2) { | |
System.out.println("\tInside the swap method"); | |
System.out.println("\t\tBefore swapping, n1 is " + n1 | |
+ " and n2 is " + n2); | |
// Swap n1 with n2 | |
int temp = n1; | |
n1 = n2; | |
n2 = temp; | |
System.out.println("\t\tAfter swapping, n1 is " + n1 | |
+ " and n2 is " + n2); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class TestRandomCharacter { | |
/** Main method */ | |
public static void main(String args[]) { | |
final int NUMBER_OF_CHARS = 175; | |
final int CHARS_PER_LINE = 25; | |
// Print random characters between 'a' and 'z', 25 chars per line | |
for (int i = 0; i < NUMBER_OF_CHARS; i++) { | |
char ch = RandomCharacter.getRandomLowerCaseLetter(); | |
if ((i + 1) % CHARS_PER_LINE == 0) | |
System.out.println(ch); | |
else | |
System.out.print(ch); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class TestReturnGradeMethod { | |
public static void main(String[] args) { | |
System.out.print("The grade is " + getGrade(78.5)); | |
System.out.print("\nThe grade is " + getGrade(59.5)); | |
} | |
public static char getGrade(double score) { | |
if (score >= 90.0) | |
return 'A'; | |
else if (score >= 80.0) | |
return 'B'; | |
else if (score >= 70.0) | |
return 'C'; | |
else if (score >= 60.0) | |
return 'D'; | |
else | |
return 'F'; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class TestVoidMethod { | |
public static void main(String[] args) { | |
System.out.print("The grade is "); | |
printGrade(78.5); | |
System.out.print("The grade is "); | |
printGrade(59.5); | |
} | |
public static void printGrade(double score) { | |
if (score >= 90.0) { | |
System.out.println('A'); | |
} | |
else if (score >= 80.0) { | |
System.out.println('B'); | |
} | |
else if (score >= 70.0) { | |
System.out.println('C'); | |
} | |
else if (score >= 60.0) { | |
System.out.println('D'); | |
} | |
else { | |
System.out.println('F'); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment