基础篇课后习题答案,做了大部分,虽然不一定是最佳代码,但是保证每个都能运行,如有更好的答案,欢迎讨论
6.1 计算五角数
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) {
if (i % 10 == 0) {
System.out.printf("%-6d\n", getPentagonalNumber(i));
} else {
System.out.printf("%-6d", getPentagonalNumber(i));
}
}
}
public static int getPentagonalNumber(int n) {
return n * (3 * n - 1) / 2;
}
6.2 求整数各位数字之和
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数:");
Long num = scanner.nextLong();
System.out.print(num + "的各位数字之和为:" + sumDigits(num));
}
public static int sumDigits(long n) {
int sumTotal = 0;
char ch;
String str = String.valueOf(n).toString();
for (int i = 0; i < str.length(); i++) {
ch = str.charAt(i);
sumTotal = sumTotal + Integer.parseInt(String.valueOf(ch));
}
return sumTotal;
}
6.3 回文整数
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数值:");
int num = scanner.nextInt();
if (isPalindrome(num) == true) {
System.out.println("这个数是回数");
} else {
System.out.println("这个数不是回数");
}
}
public static boolean isPalindrome(int number) {
return (number == reverse(number));
}
public static int reverse(int number) {
int revNum = 0;
while (number != 0) {
revNum = number % 10 + (revNum * 10);
number /= 10;
}
return revNum;
}
6.4 反方向显示一个整数
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数:");
int num = scanner.nextInt();
System.out.print("该数字的倒序输出为:" + reverse(num));
}
public static int reverse(int number) {
int result = 0;
while (number != 0) {
result = (result * 10) + number % 10;
number /= 10;
}
return result;
}
6.5 对三个数排序
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入三个数字:");
double num1, num2, num3;
num1 = scanner.nextDouble();
num2 = scanner.nextDouble();
num3 = scanner.nextDouble();
displaySortedNumbers(num1, num2, num3);
}
public static void displaySortedNumbers(double num1, double num2, double num3) {
double changeNum;
if (num1 < num2) {
changeNum = num1;
num1 = num2;
num2 = changeNum;
}
if (num2 < num3) {
changeNum = num2;
num2 = num3;
num3 = changeNum;
}
if (num1 < num2) {
changeNum = num1;
num1 = num2;
num2 = changeNum;
}
System.out.print("升序排列后的结果为:" + num3 + "," + num2 + "," + num1);
}
6.6 显示图案
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个值:");
int n = scanner.nextInt();
displayPattern(n);
}
public static void displayPattern(int n) {
for (int i = 1; i <= n; i++) {
for (int j = n - i; j >= 1; j--) {
System.out.printf("%3s", "");
}
for (int j = i; j >= 1; j--) {
System.out.printf("%3d", j);
}
System.out.println();
}
}
6.7 计算未来投资价值
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入投资额:");
double investmentAmount = scanner.nextDouble();
System.out.print("请输入年利率:");
double monthlyInterestRate = scanner.nextDouble();
monthlyInterestRate = monthlyInterestRate / 1200;
System.out.printf("%-8s%15s\n", "Years", "Future Value");
for (int i = 1; i <= 30; i++) {
System.out.printf("%-8d%15.2f\n", i, futureInvestmentValue(investmentAmount, monthlyInterestRate, i));
}
}
public static double futureInvestmentValue(double investmentAmount, double monthlyInterestRate, int years) {
double futureInvestmentValue = investmentAmount * Math.pow((1 + monthlyInterestRate), (years * 12));
return futureInvestmentValue;
}
6.8 摄氏度转换
public static void