设计思想
累加是指在一个值得基础上重复加上其他的值,典型应用有:求和,计数。
典型例题
一、统计对称数(回文数)
统计10~1000之间的对称数的个数,并打印所有对称数。对称数指一整数从左到右和从右到左是相同的数。例如:12321、656、45654.
public class Main {
private static int count = 0;
public static void main(String[] args) {
// 2位数的输出
for (int i = 10; i < 100; i++) {
getEachTwo(i);
}
// 3位数的输出
for (int i = 100; i < 1000; i++) {
getEachThree(i);
}
System.out.println("count=" + count);
}
private static void getEachThree(int i) {
int a = i % 10;
int b = (i / 10) % 10;
int c = i / 100;
if (c * 100 + b * 10 + a == a * 100 + b * 10 + c) {
System.out.println(i);
count++;
}
}
private static void getEachTwo(int i) {
int a = i % 10;
int b = i / 10;
if (a == b) {
System.out.println(i);
count++;
}
}
}
二、判断天数
输入年月日,格式如2021-3-6,判断这天是这年的第几天。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Input date:<2013-1-1>:");
String str = scanner.next();
String[] split = str.split("-");
int[] arr = new int[3];
for (int i = 0; i < split.length; i++) {
int parseInt = Integer.parseInt(split[i]);
arr[i] = parseInt;
}
day(arr);
}
private static void day(int[] arr) {
int sum = 0;
switch (arr[1] - 1) {
case 11:
sum += 30;
case 10:
sum += 31;
case 9:
sum += 30;
case 8:
sum += 31;
case 7:
sum += 31;
case 6:
sum += 30;
case 5:
sum += 31;
case 4:
sum += 30;
case 3:
sum += 31;
case 2:
sum += 28;
case 1:
sum += 31;
}
if (arr[1] > 2) {
if ((arr[0] % 4 == 0 && arr[0] % 100 != 0) || arr[0] % 400 == 0)
sum++;
}
sum += arr[2];
System.out.println(sum);
}
}
算法优化
private static void day(int[] arr) {
int a[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int sum = 0;
for (int j = 0; j < arr[1] - 1; j++) {
sum = sum + a[j];
}
if (arr[1] > 2) {
if ((arr[0] % 4 == 0 && arr[0] % 100 != 0) || arr[0] % 400 == 0)
sum++;
sum += arr[2];
System.out.println(sum);
}
}