Java-第六章程序清单

  • 格式:docx
  • 大小:24.94 KB
  • 文档页数:12

习题6.2(求一个整数各位数之和)import java.util.Scanner;public class sumIf {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.print("请输入一个整数:");Scanner input = new Scanner(System.in);long n = input.nextInt();System.out.print("输入的整数i="+ n+ "的各个数字的和是"+ sumDigits(n));}public static long sumDigits(long k){long sum = 0;while( k != 0) {sum += k % 10;k /= 10;}return sum;}}习题6.4(反向显示一个整数)import java.util.Scanner;public class reverse {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.print("请输入一个整数");Scanner input = new Scanner(System.in);int number1 = input.nextInt();reverse(number1);}public static int reverse(int number) {int i;while(number != 0){System.out.print(number%10);number /= 10;}return 0;}}习题6.6(显示图案,此方法只能在10以内对其)import java.util.*;public class displayPattern1 {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.print("请输入一个整数");Scanner input = new Scanner(System.in);int n = input.nextInt();displayPattern(n);}public static void displayPattern(int i) { for(int j = 1; j <= i; j++) {for(int k = 0; k < i-j; k++) {System.out.print(" ");//if(j >= 10)System.out.print(" ");}for(int k = j; k > 0; k--) {System.out.print(k + " ");}System.out.println();}}}程序清单6-1(调用max方法)public class TestMax {public static void main(String[] args) {// TODO Auto-generated method stubint i = 5;int j = 2;int k = max(i, j);System.out.println("the maxinum of " + i + " and " + j + " is " + k);}public static int max(int num1, int num2) {int result;if (num1 > num2)result = num1;elseresult = num2;return result;}}程序清单6-2(void方法示例,打印给定分数的等级)public class TestVoidMethod {public static void main(String[] args) {// TODO Auto-generated method stubSystem.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');}}}程序清单6-3(void方法的示例,与程序清单做对比,打印一个分数的等级)public class TestReturnVoidMethod {public static void main(String[] args) {System.out.print("The frade is " + getGrade(78.5));System.out.print("\nThe frade is " + getGrade(59.5));}public static char getGrade(double score) {if (score >= 90)return'A';else if (score >= 80)return'B';else if (score >= 70)return'C';else if (score >= 60)return'D';elsereturn'F';}}程序清单6-4(通过传值进行参数传递)public class Increment {public static void main(String[] args) {// TODO Auto-generated method stubint 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);}}程序清单6-5(按值传递参数)public class TestPassByValue {public static void main(String[] args) {// TODO Auto-generated method stubint num1 = 1;int num2 = 2;System.out.println("Before invoking the s, num1 is " +num1 +" and num2 is " + num2);s);System.out.println("After invoking the s, num1 is " +num1 + " and num2 " + num2);}public static void s n1, int n2) {System.out.println("\tIside the method");System.out.println("\t\tBefore s, n1 is " + n1 + " and n2 is " + n2);int temp = n1;n1 = n2;n2 = temp;System.out.println("\t\tAfter s, n1 is " + n1 + " and n2 is " + n2);}}程序清单6-6(程序模块化_求最大公约数)import java.util.Scanner;public class GreatestCommonDivisorMethod {public static void main(String[] args) {// TODO Auto-generated method stubScanner input = new Scanner(System.in);System.out.print("Enter first integer: ");int n1 = input.nextInt();System.out.print("Enter scond integer: ");int n2 = input.nextInt();System.out.println("The greatest common divisor for " + n1 + " and "+ n2 + " is " + gcd(n1, n2));}public static int gcd(int n1, int n2) {int gcd = 1;int k = 2;while (k <= n1 && k <= n2) {if (n1 % k ==0 && n2 % k == 0)gcd = k;k++;}return gcd;}}程序清单6-7(程序模块化,打印50以内的素数,输出结果与书上不一致)public class PrimeNumberMethod {public static void main(String[] args) {// TODO Auto-generated method stubSystem.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;int count = 0;int number = 2;while(count < numberOfPrimes) {if(isPrime(number)) {count++;}if(count % NUMBER_OF_PRIMES_PER_LINE == 0) {System.out.printf("%-5s\n", number);}elseSystem.out.printf("%-5s", number);number++;}}public static boolean isPrime (int number){for(int divisor = 2; divisor <= number / 2 ; divisor++) {if(number % divisor == 0)return false;}return true;}}程序清单6-8(将16进制转换为十进制)import java.util.Scanner;public class Hex2Dec {public static void main(String[] args) {// TODO Auto-generated method stubScanner input = new Scanner(System.in);System.out.print("Enter a hex number: ");String hex = input.nextLine();//Sting是什么, 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++) {//hex.length是什么char hexChar = hex.charAt(i);//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';elsereturn ch - '0';}}程序清单6-9(重载方法,求最大值)public class TestMethodOverloading {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("The maxmum of 3 and 4 is " + max(3, 4));System.out.println("The maxmum of 3.0 and 5.4 is " + max(3.0, 5.4));System.out.println("The maxmum of 3.0, 4.5 and 10.14 is " + max(3.0, 5.4, 10.14));}public static int max(int num1, int num2) {if (num1 > num2)return num1;elsereturn num2;}public static double max(double num1, double num2) {if(num1 > num2)return num1;elsereturn num2;}public static double max(double num1, double num2, double num3) { return max(max(num1, num2), num3);}}程序清单6-10(生成随机字符)public class RandomCharacter {public static char getRandomCharacter(char ch1, char ch2) {return (char)(ch1 + Math.random() * (ch2 - ch1 + 1));}public static char getRandomLowerCaseLetter() {return getRandomCharacter('a', 'z');}public static char getRandomUpperCaseLetter() {return getRandomCharacter('A', 'Z');}public static char getRandomDigtCharacter() {return getRandomCharacter('0', '9');}public static char getRandimCharacter() {return getRandomCharacter('\u0000', '\uFFFF');}}程序清单6-11(生成随机数,调用了6-10的方法)public class TestRandomCharacter {public static void main(String[] args) {// TODO Auto-generated method stubfinal int NUMBER_OF_CHARS = 175;final int CHARS_PER_LINE = 25;for(int i = 0; i < NUMBER_OF_CHARS; i++) {char ch = RandomCharacter.getRandomLowerCaseLetter();if((i + 1) % CHARS_PER_LINE == 0)System.out.println(ch);elseSystem.out.print(ch);}}}程序清单6-12(方法抽象,逐步求精)import java.util.Scanner;public class PrintCalendar {public static void main(String[] args) {// TODO Auto-generated method stubScanner input = new Scanner(System.in);System.out.print("Enter full yuer (e.g., 2012): ");int year = input.nextInt();System.out.print("Enter month as a number between 1 and 12: ");int month = input.nextInt();printMonth(year, month);}public static void printMonth(int year, int month) {printMonthTitle(year, month);printMonthBody(year, month);}public static void printMonthTitle(int year, int month) { System.out.println(" " + getMonthName(month) + " " + year);System.out.println("---------------------");System.out.println(" Sun Mon Tue Wed Tue Fri Sat");}public static String getMonthName(int month) {String monthName = "";switch (month) {case 1: monthName = "January"; break;case 2: monthName = "Fanuary"; 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"; break;}return monthName;}public static void printMonthBody(int year, int month) {int startDay = getStartDay(year, month);int numberOfDaysInMonth = getNumberOfDaysInMonth(year, month);int i = 0;for(i = 0; i < startDay; i++) {System.out.print(" ");}for(i = 0; i <= numberOfDaysInMonth; i++) {System.out.printf("%4d", i);if((i + startDay) % 7 == 0)System.out.println();}System.out.println();}public static int getStartDay(int year, int month) {final int START_DAY_FOR_JAN_1_1800 = 3;int totalNumberOfDays = getTotalNumberOfDays(year, month);return (totalNumberOfDays + START_DAY_FOR_JAN_1_1800) % 7;}public static int getTotalNumberOfDays(int year, int month) { int total = 0;for(int i = 1800; i < year; i++)if(isLeapYear(i))total = total + 366;elsetotal = total + 365;for(int i = 1; i < month; i++)total = total + getNumberOfDaysInMonth(year , i);return total;}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;}public static boolean isLeapYear(int year) {return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);}}。