资源描述
Java第六章程序清单
24
2020年4月19日
文档仅供参考
习题6.2(求一个整数各位数之和)
import java.util.Scanner;
public class sumIf {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.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 stub
System.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 stub
System.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 stub
int 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;
else
result = num2;
return result;
}
}
程序清单6-2(void方法示例,打印给定分数的等级)
public class TestVoidMethod {
public static void main(String[] args) {
// TODO Auto-generated method stub
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');
}
}
}
程序清单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';
else
return 'F';
}
}
程序清单6-4(经过传值进行参数传递)
public class Increment {
public static void main(String[] args) {
// TODO Auto-generated method stub
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);
}
}
程序清单6-5(按值传递参数)
public class TestPassByValue {
public static void main(String[] args) {
// TODO Auto-generated method stub
int num1 = 1;
int num2 = 2;
System.out.println("Before invoking the swap method, num1 is " +
num1 +" and num2 is " + num2);
swap(num1,num2);
System.out.println("After invoking the swap method, num1 is " +
num1 + " and num2 " + num2);
}
public static void swap(int n1, int n2) {
System.out.println("\tIside the method");
System.out.println("\t\tBefore swapping, n1 is " + n1 + " and n2 is " + n2);
int temp = n1;
n1 = n2;
n2 = temp;
System.out.println("\t\tAfter swapping, 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 stub
Scanner 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 stub
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;
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);
}
else
System.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 stub
Scanner 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';
else
return ch - '0';
}
}
程序清单6-9(重载方法, 求最大值)
public class TestMethodOverloading {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.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;
else
return num2;
}
public static double max(double num1, double num2) {
if(num1 > num2)
return num1;
else
return 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 stub
final 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);
else
System.out.print(ch);
}
}
}
程序清单6-12(方法抽象,逐步求精)
import java.util.Scanner;
public class PrintCalendar {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
System.out.print("Enter full yuer (e.g., ): ");
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;
else
total = 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);
}
}
展开阅读全文