首页 > 代码库 > Java经典习题(2)
Java经典习题(2)
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); } }
8.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3,编程找出1000以内的所有完数。
程序分析:只需找出数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; } } }
9.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第n次落地时,共经过了多少米?第n次反弹多高?
程序分析:将落地弹起这一过程看作是一个回合,用循环计算累加到第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); } }
10.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:用三层循环,判断百位和十位是不相等的,百位和个位是不相等的,十位和个位是不相等的,即满足条件。
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 + "个数"); } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。