6.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
程序分析:从控制台获取一行输入,然后对String字符串的内容进行判断,统计每种字符的个数,直到遇到回车“\n”为止。
import java.util.Scanner; public class Question6 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.nextLine(); char[] dst = new char[str.length()]; str.getChars(0, str.length(), dst, 0); int letterCount = 0; //记录字母出现的个数 int whiteSpaceCount = 0; //记录空格出现的个数 int numberCount = 0; //记录数字出现的个数 int otherCount = 0; //记录其他字符出现的个数 for (char c : dst) { if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { letterCount++; } else if (c == ' ') { whiteSpaceCount++; } else if (c >= '0' && c <= '9') { numberCount++; } else { otherCount++; } } System.out.println("字母个数是:" + letterCount); System.out.println("空格个数是:" + whiteSpaceCount); System.out.println("数字个数是:" + numberCount); System.out.println("其它字符个数是:" + otherCount); } }
程序分析:程序的关键是要计算出每个aa...aa的值的大小,每个值的大小等于每个位上的数值之和。
import java.util.Scanner; public class Question7 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入a的值:"); long a = sc.nextLong(); System.out.println("请输入相加数的个数:"); long b = sc.nextLong(); long s = 0; for (long i = 1; i <= b; i++) { long temp = a; long w = 1; // w记录权 for (long j = i; j > 1; j--) { w = w * 10; temp = temp + (a * w); } s = s + temp; // temp记录每个“+”号分隔开的数的值 } System.out.print("s="); for (long i = 1; i <= b; i++) { System.out.print(a); for (long j = i; j > 1; j--) { System.out.print(a); } if (i != b) { System.out.print("+"); } } System.out.println("=" + s); } }
程序分析:只需找出数n所有的因子(即能被n整除的数),把所有的因子之和与n进行比较即可。
public class Question8 { public static void main(String[] args) { for (int i = 1; i < 1000; i++) { if (isPerfectNumber(i)) { System.out.println(i); } } } /** * 判断一个数是否是“完数” * @param n * @return 返回true,表示数n是“完数”;返回false,表示数n不是“完数” */ private static boolean isPerfectNumber(int n) { int sum = 0; //记录数n所有因子相加之和 for (int i = 1; i < n; i++) { if (n % i == 0) { sum += i; } } if (sum == n) { return true; } else { return false; } } }
程序分析:将落地弹起这一过程看作是一个回合,用循环计算累加到第n次落地弹起时将弹起部分的距离减掉即可得到所经过的距离。
import java.util.Scanner; public class Question9 { public static void main(String[] args) { System.out.println("请输入反弹次数:"); Scanner sc = new Scanner(System.in); int m = sc.nextInt(); double height = 100.0; double sum = 0.0; double reHeight = 0.0; for (int i = 1; i <= m; i++) { reHeight = height / 2; sum = sum + height + reHeight; height = reHeight; if (i == m) { sum -= height; } } System.out.println("第" + m + "次落地共经过的米数:" + sum); System.out.println("第" + m + "次落地后反弹的高度::" + reHeight); } }
程序分析:用三层循环,判断百位和十位是不相等的,百位和个位是不相等的,十位和个位是不相等的,即满足条件。
public class Question10 { public static void main(String[] args) { int count = 0; for (int i = 1; i <= 4; i++) { for (int j = 1; j <= 4; j++) { for (int k = 1; k <= 4; k++) { if (i != j && i != k && j != k) { System.out.println(i + "" + j + "" + k); count++; } } } } System.out.println("共有" + count + "个数"); } }
原文:http://blog.csdn.net/bear_huangzhen/article/details/28586397