- 博客(55)
- 收藏
- 关注
原创 Math类的三个方法比较: floor() ceil() round()
public class Test { public static void main(String[] args) { double d1 = 3.4, d2 = 3.6; //正数 double d3 = -3.4, d4 = -3.6; //负数 float f1 = 4.4F, f2 = 4.6F; //正...
2019-04-29 15:05:08
765
原创 观察者设计模式
在网上找了很久没看见有讲的很清楚的,我自己花了一点时间终于弄懂了,现在想用最通俗易懂的方法将观察者设计模式讲明白观察者设计模式类似于发布订阅模式,所以我准备以订阅用户定义公众号来举例说明首先创建公众号接口类package 观察者模式;//公众号接口interface WechatInterface { //添加用户 void addUser(User user);...
2019-04-06 02:14:58
211
原创 直接排序法又叫选择排序:choose sort
题目:使用直接排序法将下列数组(从小到大排序)思路:第一次:使用索引值为0的元素与其他位置的元素挨个比较一次,如果发现比0号索引值的元素小的,那么交换位置,第一轮下来最小值被放在了第一位 第二次:将索引值为1的元素与其他位置的元素挨个比较一次,如果发现比1号索引值的元素小的,那么交换位置,第二轮下来第二小的值被放在了第二位 ...这样依次循环比较n-1次,实现有小到大的排序...
2018-09-08 09:23:13
1213
原创 冒泡排序:bubble sort
思路:相邻的两个元素挨个比较,大的元素放在右边小的放在左边public class Bubblesort { public static void main(String[] args) { int[] arr=new int[]{12,5,17,8,9}; //排序前的数组 System.out.println("排序前的数组元素为...
2018-09-08 09:20:40
234
原创 从键盘录入一个数据,输出对应的九九乘法表
import java.util.Scanner;public class Jiujiuchengfabiao { public static void main(String[] args) { System.out.println("请输入一个数:"); Scanner scanner=new Scanner(System.in); ...
2018-09-08 09:18:29
1859
原创 Java50道经典习题-程序50 文件IO
题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件"stud"中。import java.io.*;public class Prog50{ //定义学生模型 String[] number = new String[5]; String[] name = n...
2018-09-08 09:15:51
1040
原创 Java50道经典习题-程序49 子串出现的个数
题目:计算首末不含空格各个子串之间只含一个空格的字符串中子串出现的次数分析:例如输入的字符串为"I come from County DingYuan Province AnHui." 空格隔断的即为字符子串,所以上述字符串的子串个数有7个public class Prog49{ public static void main(String[] args){ ...
2018-09-08 09:15:36
568
原创 Java50道经典习题-程序48 数字加密
题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。分析:例如原始数据是: 6 7 8 9(原始数据) 每个数加上5后为:11 12 13 14 除以10后为: 1 2 3 4 交换位...
2018-09-08 09:15:24
845
原创 Java50道经典习题-程序47 输入数字打印星号
题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。import java.util.Scanner;public class Prog47{ public static void main(String[] args){ System.out.print("请输入7个整数(1-50):"); Scanner scan =...
2018-09-08 09:15:12
1221
原创 Java50道经典习题-程序46 字符串连接
题目:编写一个两个字符串连接的程序import java.util.Scanner;public class Prog46 { public static void main(String[] args) { System.out.println("请输入第一个字符串:"); Scanner scan=new Scanner(System.in);...
2018-09-08 09:14:57
722
原创 Java50道经典习题-程序45 被9整除
题目:判断一个素数能被几个9整除分析:素数只能被1和其本身整除,不能被9整除,所以返回falseimport java.util.Scanner;public class Prog45{ public static void main(String[] args){ System.out.print("请输入一个素数:"); Scanner sc...
2018-09-08 09:14:45
531
原创 Java50道经典习题-程序44 偶数的素数和
题目:一个偶数总能表示为两个素数之和。分析:一个偶数可能会有不止一对两个素数之和的情况 例如:20=3+17 20=7+13import java.util.Scanner;public class Prog44 { public static void main(String[] args) { System.out.print("请输入一个偶数:"...
2018-09-08 09:14:31
477
原创 Java50道经典习题-程序43 求奇数个数
题目:求0—7所能组成的奇数个数,奇数中不包含重复数字。public class Prog43 { public static void main(String[] args) { //0-7能组成的所有不重复的数的最大值是76543210 //0-76543210中所有的奇数个数为76543210/2 String[] s=new ...
2018-09-07 14:08:48
950
2
原创 Java50道经典习题-程序42 求数字
题目:809*??=800*??+9*??+1其中??代表两位数,若有这样得数,求??代表的两位数public class Prog42{ public static void main(String[] args){ int n = 0; boolean flag = false; for(int i=10;i<100;i++...
2018-09-07 14:08:36
264
原创 Java50道经典习题-程序41 猴子分桃
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?分析:求最少的桃子数,则第五个猴子分桃时,手上一共有6个桃利用递归法可求得最初的桃数public class P...
2018-09-07 14:08:18
488
原创 Java50道经典习题-程序40 字符串排序
题目:根据字符串内字符的ASCII码值对字符串数组进行排序。分析:字符串用ASCII码比较大小,规则是:1、比较首字母的ASCII码大小2、若是前面的字母相同,则比较之后的字母的ASCII码值3、若是一个字符串从首字母开始包含另一个字符串,则认为字符串长度较长的大;例 :ab > a备注:Java中String类有一个compareTo方法,该方法返回一个int类型的数据。其比较...
2018-09-07 14:08:04
940
原创 Java50道经典习题-程序39 分数累加
题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/nimport java.util.Scanner;public class Prog39 { public static void main(String[] args) { System.out.println("请输入一个正整...
2018-09-07 14:07:48
430
原创 Java50道经典习题-程序38 求字符串长度
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。import java.util.Scanner;public class Prog38 { public static void main(String[] args) { System.out.println("请输入一个字符串:"); Scanner scan=...
2018-09-07 14:07:33
712
1
原创 Java50道经典习题-程序37 报数
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。分析:最后留下的是第n号那位import java.util.Scanner;public class Prog37{ public static void main(String[] args){ System.out.println("...
2018-09-07 14:07:15
386
原创 Java50道经典习题-程序36 移动位置
题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数分析:比如有4个数n=4;1 2 3 4各个数向后移动2位m=2,变为 1 2 3 4将最后m个数,即将最后2个数变成前面的2个数变为3 4 1 2import java.util.Arrays;import java.util.Scanner;public class Prog36 { ...
2018-09-07 14:06:53
326
原创 Java50道经典习题-程序35 最大最小交换
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。分析: 例如输入6 4 8 3 9 7 交换后输出9 4 8 7 6 3import java.util.Arrays;import java.util.Scanner;public class Prog35 { public static void main(String[] args)...
2018-09-07 14:01:48
853
原创 Java50道经典习题-程序34 三个数排序
题目:输入3个数a,b,c,按大小顺序输出。import java.util.Scanner;public class Prog34 { public static void main(String[] args) { //键盘录入三个数 Scanner scan=new Scanner(System.in); System.out...
2018-09-07 14:01:28
306
原创 Java50道经典习题-程序33 杨辉三角
题目:打印出杨辉三角形(要求打印出10行如下图)分析: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 11 5 10 10 5 1%4d代表在4个空格内打印数字。我们选择4,因为我们知道10行杨辉三角形的最大数字的最大位数是3位数。public class Prog33 { public static void main(S...
2018-09-06 08:02:16
569
原创 Java50道经典习题-程序32 左移右移
题目:取一个整数a从右端开始的4~7位。分析:比如取123456789从右端开始的4~7位即:3456(1)先使a右移4位。(2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4)(3)将上面二者进行&运算。import java.util.Scanner;;public class Prog32{ public static void ma...
2018-09-06 08:02:00
682
原创 Java50道经典习题-程序31 数组逆序
题目:将一个数组逆序输出。分析:用第一个与最后一个交换。public class Prog31 { public static void main(String[] args) { //遍历原始数组 System.out.println("遍历原始数组为:"); int[] array= {1,2,3,4,5}; f...
2018-09-06 08:01:47
350
原创 Java50道经典习题-程序30 插入数字
题目:有一个已经排好序的数组。现输入一个数,要求将它插入数组中后数组依然是排好序的。分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。import java.util.Arrays;import java.util.Scanner;public class Prog30 { public static void ma...
2018-09-06 08:01:29
476
原创 Java50道经典习题-程序29 求矩阵对角线之和
题目:求一个3*3矩阵对角线元素之和分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。 例如:下面矩阵的对角线之和为24 1 4 6 2 5 3 9 7 8public class Prog29 { public static void main(String[] args) { int[][]arr...
2018-09-06 08:01:12
1662
原创 Java50道经典习题-程序28 排序算法
题目:对10个数进行排序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。public class Prog28 { public static void main(String[] args) { int [] arr= {1,3,5,7,9,0,2,4,6,8}; ...
2018-09-06 08:01:00
1337
原创 Java50道经典习题-程序27 求素数
题目:求100之内的素数分析:素数即除了1和它本身以外不再有其他因数,最小的素数是2 判断一个数n是否是素数的方法:将n分别与2到(n+1)/2取余,若有一个值为0,则n就不为素数,反之为素数public class Prog27 { public static void main(String[] args) { System.out.println("...
2018-09-06 08:00:44
698
原创 Java50道经典习题-程序26 求星期
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。周一至周日的英文单词为,从中可以看出周二和周四;周六和周日第一个字母一样,第二个字母不一样,所以只需要比较前两个字母即可星期一 :Monday星期二 :Tuesday星期三 :Wednesday星期四 :T...
2018-09-06 08:00:26
290
原创 Java50道经典习题-程序25 根据输入求输出
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。分析:分别创建两个数用于判断,一个数为12321,另一个数是12341 分别取出该数的"个十百千万"位进行判断public class Prog25 { public static void main(String[] args) { int i=12321;...
2018-09-06 08:00:07
989
原创 Java50道经典习题-程序24 根据输入求输出
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。分析: (1)利用随机函数产生[1,99999]之间的一个正整数n (2)将n转换成字符串s,调用字符串的length()方法求得位数 (3)创建一个StringBuffer类对象,将s传入,调用StringBuffer类的reverse()方法直接逆序输出结果import java.ut...
2018-09-06 07:59:40
825
原创 Java50道经典习题-程序23 求岁数
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第1个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。public class Prog23 ...
2018-09-05 08:18:42
303
原创 Java50道经典习题-程序22 递归求阶乘
题目:利用递归方法求5!。分析:递归公式:n*factorial(n-1);public class Prog22 { public static void main(String[] args) { System.out.println(factorial(5)); } //递归求阶乘 public static long factori...
2018-09-05 08:18:35
472
原创 Java50道经典习题-程序21 求阶乘
题目:求1+2!+3!+...+20!的和分析:使用递归求解 0的阶乘和1的阶乘都为1public class Prog21{ public static void main(String[] args){ long sum=0L; for(int i=1;i<=20;i++) { sum+=factori...
2018-09-05 08:18:27
380
原创 Java50道经典习题-程序20 求前20项之和
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。分析:请抓住分子与分母的变化规律。三个连续分数之间的规律是:上两个分子之和等于第三个分数的分子,上两个分母之和等于第三个分数的分母public class Prog20{ public static void main(String[] args){ do...
2018-09-05 08:18:20
1583
原创 Java50道经典习题-程序19 输入行数打印菱形图案
题目:根据用户输入的行数打印菱形图案,若用户传入的是为偶数则提示用户重新输入,例如输入数字7打印出如下菱形图案 * *** ************ ***** *** *分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列。import java.util.Scanner;public class...
2018-09-05 08:18:12
3907
原创 Java50道经典习题-程序18 乒乓球赛
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。 a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。分析:如果是人经过逻辑推理可以很快的得到结论。但是计算机处理此问题,不可能立即得出结论,而必须对每一种组合一一验证,找出符合条件的组合。 假设甲队a,b,c的对手分别是i,j,k...
2018-09-05 08:18:04
1889
原创 Java50道经典习题-程序17 猴子吃桃问题
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。分析:采取逆向思维的方法,从后往前推断。假设:第九天还有x个桃,第十天就还有(x/2)-1个桃;若设第十天还有m个桃,则满足等式(x/2)-1=m反推第九天还...
2018-09-05 08:17:57
341
原创 Java50道经典习题-程序16 在控制台上打印九九乘法表
题目:输出9*9口诀。分析:利用双重for循环进行输出,分行与列考虑,共9行9列,i控制行,j控制列。public class Prog16 { public static void main(String[] args) { for(int i=1;i<10;i++) { for(int j=1;j<i+1;j++) { ...
2018-09-05 08:17:48
771
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人