Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
11 views16 pages

Kod Chapter6

The document contains multiple Java programs demonstrating various programming concepts such as method creation, method overloading, and passing values to methods. It includes examples of finding maximum values, printing grades, calculating the greatest common divisor, generating random characters, and printing a calendar. Each program illustrates different functionalities and techniques in Java programming.

Uploaded by

Emre Selvili
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views16 pages

Kod Chapter6

The document contains multiple Java programs demonstrating various programming concepts such as method creation, method overloading, and passing values to methods. It includes examples of finding maximum values, printing grades, calculating the greatest common divisor, generating random characters, and printing a calendar. Each program illustrates different functionalities and techniques in Java programming.

Uploaded by

Emre Selvili
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 16

This program demonstrates calling a method max to return the largest

of the int values


public class TestMax {
/** Main method */
public static void main(String[] args) {
int i = 5;
int j = 2;
int k = max(i, j); // Invoke max method
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; // Return result


}
}
This type of method does not return a value. The method performs some
actions.
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');
}
}
}
This program demonstrates passing values to the methods.
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);
}
}

Testing Pass by value


This program demonstrates passing values to the methods.
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);
}
}
Methods can be used to reduce redundant coding and enable code
reuse. Methods can also be used to modularize code and improve the
quality of the program.
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


}
public class PrimeNumberMethod {
public static void main(String[] args) {
System.out.println("The first 50 prime numbers are \n");
printPrimeNumbers(50);
}

public static void printPrimeNumbers(int numberOfPrimes) {


final int NUMBER_OF_PRIMES_PER_LINE = 10; // Display 10 per line
int count = 0; // Count the number of prime numbers
int number = 2; // A number to be tested for primeness

// Repeatedly find prime numbers


while (count < numberOfPrimes) {
// Print the prime number and increase the count
if (isPrime(number)) {
count++; // Increase the count

if (count % NUMBER_OF_PRIMES_PER_LINE == 0) {
// Print the number and advance to the new line
System.out.printf("%-5d\n", number);
}
else
System.out.printf("%-5d", number);
}

// Check if the next number is prime


number++;
}
}

/** Check whether number is prime */


public static boolean isPrime(int number) {
for (int divisor = 2; divisor <= number / 2; divisor++) {
if (number % divisor == 0) { // If true, number is not prime
return false; // number is not a prime
}
}

return true; // number is prime


}
}

Write a method that converts a hexadecimal number into a decimal


number.
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 ('A' <= ch && ch <= 'F')
return 10 + ch - 'A';
else // ch is '0', '1', ..., or '9'
return ch - '0';
}
Overloading the max Method
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);
}
}

The RandomCharacter Class


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');
}
}

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);
}
}
}

Let us use the PrintCalendar example to demonstrate the stepwise


refinement approach.
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);

You might also like