上次已经为大家介绍过java基础算法题,兔子问题和水仙花束,今天我们继续来了解下java基础算法题的内容,会通过四个实例为大家展示。
一、Test1.java GcdTest.java,后者是辗转相除法
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
先进行分析:利用辗除法。代码展示如下所示:
package cn.edu.hit; import java.util.Scanner; /** * 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 * 1.程序分析:利用辗除法。 * @author tonylp */ public class comonDivisor { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); int first = a; int second = b; System.out.println("a=" + a + ";b=" + b); int temp; if (a < b) { temp = a; a = b; b = temp; } while (b != 0) { temp = a % b; a = b; b = temp; } System.out.println("最大公约数为" + a); System.out.println("最小公倍数为" + first * second / a); } }
二、StChar.java
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
先进行分析:利用while语句,条件为输入的字符不为'\n'。代码展示如下所示:
package cn.edu.hit; import java.util.Scanner; /** * 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 1.程序分析:利用while语句,条件为输入的字符不为'\n'. * * @author tonylp */ public class strIdentify { public static void main(String[] args) { int abcCount = 0; int spaceCount = 0; int numCount = 0; int otherCount = 0; Scanner sc = new Scanner(System.in); String str = sc.nextLine(); char[] ch = str.toCharArray(); for (int i = 0; i < ch.length; i++) { if (Character.isDigit(ch[i])) { numCount++; } else if (Character.isSpaceChar(ch[i])) { spaceCount++; } else if (Character.isLetter(ch[i])) { abcCount++; } else { otherCount++; } } System.out.println("字母个数" + abcCount); System.out.println("数字个数" + numCount); System.out.println("空格个数" + spaceCount); System.out.println("其他字符个数" + otherCount); } }
三、TestAdd.java
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。比如说,2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
进行分析:重点是计算出每一项的值。代码展示如下所示:
package cn.edu.hit; import java.util.Scanner; /** * 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加), * 几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值。 * * @author tonylp */ public class numAdd { public static void main(String[] args) { System.out.println("请输入数字0-9:"); Scanner sc = new Scanner(System.in); int a = sc.nextInt(); System.out.println("请输入数字重复次数:"); int b = sc.nextInt(); int s = 0; System.out.println("a=" + a + ";b=" + b); for (int i = b; i > 0; i--) { s += i * a * Math.pow(10, (b - i)); } System.out.println("s=" + s); } }
四、WanShu.java
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。比如说,6=1+2+3.编程找出1000以内的所有完数。代码如下所示:
package cn.edu.hit; /** * 题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如6=1+2+3.编程 找出1000以内的所有完数。 * * @author tonylp */ public class wanShu { public static void main(String[] args) { int k = 2; int num = 0; int temp = 1; int j = 0; for (num = 1; num <= 1000; num++) { k = 2; temp = 1; j = num; while (j >= k) { if (j % k == 0) { temp += k; j = j / k; } else { k++; } } if (temp == num) { System.out.println(temp); } } } }
以上 就是关于 java基础算法题,四个实例分享的主要内容。如果你对java知识感兴趣,想要了解更多java基础,敬请关注奇Q工具网。
推荐阅读: