Java经典基础代码.docx
- 文档编号:7026857
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:21
- 大小:18.87KB
Java经典基础代码.docx
《Java经典基础代码.docx》由会员分享,可在线阅读,更多相关《Java经典基础代码.docx(21页珍藏版)》请在冰点文库上搜索。
Java经典基础代码
Monkey_peach代码
packagecom.sailor.game;
/**
*题目:
猴子吃桃问题:
猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩
*下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少。
*程序分析:
采取逆向思维的方法,从后往前推断。
*
*@authorSailor
*
*/
publicclassMonkey_Peach{
publicstaticvoidmain(String[]args){
int[]peach=newint[10];
peach[9]=1;
//下面利用的是数组和循环将每天的桃子数量都求出来了
for(inti=peach.length-1;i>0;i--){
peach[i-1]=2*(peach[i]+1);
}
for(inti=0;i System.out.println(peach[i]); } System.out.println("第一天的桃子数: "+getPeach_Num(10,1)); } //利用递归的方法来求第一天的桃子数,输入参数为天数和当天的桃子数,输出为第一天桃子数 publicstaticintgetPeach_Num(intday,intpeach_num){ if(day==1) returnpeach_num; elseif(day<1||peach_num<0) return0; else returngetPeach_Num(day-1,(peach_num+1)*2); } } packagecom.sailor.game; /** *题目: 猴子吃桃问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩 *下的桃子吃掉一半,又多吃了一个。 以后每天早上都吃了前一天剩下的一半零一个。 到第10天早上想再吃时,见只剩下一个桃子了。 求第一天共摘了多少。 *程序分析: 采取逆向思维的方法,从后往前推断。 * *@authorSailor * */ publicclassMonkey_Peach{ publicstaticvoidmain(String[]args){ int[]peach=newint[10]; peach[9]=1; //下面利用的是数组和循环将每天的桃子数量都求出来了 for(inti=peach.length-1;i>0;i--){ peach[i-1]=2*(peach[i]+1); } for(inti=0;i System.out.println(peach[i]); } System.out.println("第一天的桃子数: "+getPeach_Num(10,1)); } //利用递归的方法来求第一天的桃子数,输入参数为天数和当天的桃子数,输出为第一天桃子数 publicstaticintgetPeach_Num(intday,intpeach_num){ if(day==1) returnpeach_num; elseif(day<1||peach_num<0) return0; else returngetPeach_Num(day-1,(peach_num+1)*2); } } Times_table代码 packagecom.sailor.game; /** *输出9*9口诀 * *@authorSailor * */ publicclassTimes_Table{ publicstaticvoidmain(String[]args){ for(inti=1;i<=9;i++){ for(intj=1;j<=i;j++){ System.out.print(j+"*"+i+"="+(i*j)); System.out.print("\t"); } System.out.println(); } } } packagecom.sailor.game; /** *输出9*9口诀 * *@authorSailor * */ publicclassTimes_Table{ publicstaticvoidmain(String[]args){ for(inti=1;i<=9;i++){ for(intj=1;j<=i;j++){ System.out.print(j+"*"+i+"="+(i*j)); System.out.print("\t"); } System.out.println(); } } } Armstrong_number代码 packagecom.sailor.game; /** *题目: 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。 *例如: 153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 * *@authorSailor * */ publicclassArmstrong_number{ publicstaticvoidmain(String[]args){ for(inti=100;i<1000;i++){ intn1,n2,n3; intk=i; n1=k/100; k%=100; n2=k/10; k%=10; n3=k; if(i==(getCube(n1)+getCube(n2)+getCube(n3))){ System.out.println(i); } } } publicstaticintgetCube(intn){ returnn*n*n; } } packagecom.sailor.game; /** *题目: 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。 *例如: 153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 * *@authorSailor * */ publicclassArmstrong_number{ publicstaticvoidmain(String[]args){ for(inti=100;i<1000;i++){ intn1,n2,n3; intk=i; n1=k/100; k%=100; n2=k/10; k%=10; n3=k; if(i==(getCube(n1)+getCube(n2)+getCube(n3))){ System.out.println(i); } } } publicstaticintgetCube(intn){ returnn*n*n; } } Common_divisor代码 packagecom.sailor.game; importjava.util.Scanner; /** *题目: 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析: 利用辗除法。 * *用辗转相除法求两个数的最大公约数的步骤如下: 先用小的一个数除大的一个数,得第一个余数;再用第一个余数除小的一个数,得第二个余数; *又用第二个余数除第一个余数,得第三个余数; *这样逐次用后一个数去除前一个余数,直到余数是0为止。 那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。 *最小公倍数为两个数相乘然后除以最大公约数 * *@authorsailor * */ publicclassCommon_Divisor{ publicstaticvoidmain(String[]args){ Scannerin=newScanner(System.in); System.out.println("请输入第一个数"); inta=in.nextInt(); System.out.println("请输入第二个数"); intb=in.nextInt(); System.out.println(a+"和"+b+"的最大公约数是"+getMaxCommon_Divisor(a,b)); System.out.println(a+"和"+b+"的最小公倍数是"+getMincommon_multiple(a,b)); } //求最大公约数 publicstaticintgetMaxCommon_Divisor(inta,intb){ intmax=Math.max(a,b); intmin=Math.min(a,b); intmod=max%min; if(mod==0){ returnmin; }else{ returngetMaxCommon_Divisor(mod,min); } } //求最大公约数 publicstaticintgetMincommon_multiple(inta,intb){ return(a*b)/getMaxCommon_Divisor(a,b); } } packagecom.sailor.game; importjava.util.Scanner; /** *题目: 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析: 利用辗除法。 * *用辗转相除法求两个数的最大公约数的步骤如下: 先用小的一个数除大的一个数,得第一个余数;再用第一个余数除小的一个数,得第二个余数; *又用第二个余数除第一个余数,得第三个余数; *这样逐次用后一个数去除前一个余数,直到余数是0为止。 那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。 *最小公倍数为两个数相乘然后除以最大公约数 * *@authorsailor * */ publicclassCommon_Divisor{ publicstaticvoidmain(String[]args){ Scannerin=newScanner(System.in); System.out.println("请输入第一个数"); inta=in.nextInt(); System.out.println("请输入第二个数"); intb=in.nextInt(); System.out.println(a+"和"+b+"的最大公约数是"+getMaxCommon_Divisor(a,b)); System.out.println(a+"和"+b+"的最小公倍数是"+getMincommon_multiple(a,b)); } //求最大公约数 publicstaticintgetMaxCommon_Divisor(inta,intb){ intmax=Math.max(a,b); intmin=Math.min(a,b); intmod=max%min; if(mod==0){ returnmin; }else{ returngetMaxCommon_Divisor(mod,min); } } //求最大公约数 publicstaticintgetMincommon_multiple(inta,intb){ return(a*b)/getMaxCommon_Divisor(a,b); } } Compute_day代码 packagecom.sailor.game; importjava.util.Scanner; /** *题目: 输入某年某月某日,判断这一天是这一年的第几天? *程序分析: 以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天, *特殊情况,闰年且输入月份大于3时需考虑多加一天。 * *@authorSailor * */ publicclassCompute_Day{ publicstaticvoidmain(String[]args){ Scannerin=newScanner(System.in); System.out.println("请依次输入年、月、日: "); intyear=in.nextInt(); intmonth=in.nextInt(); intday=in.nextInt(); intdays=0; booleanisLeap=isLeap(year); for(inti=1;i days+=getDays(i,isLeap); } System.out.println("这是今年的第"+(days+day)+"天"); } publicstaticintgetDays(intmonth,booleanisLeap){ intdays=0; switch(month){ case1: case3: case5: case7: case8: case10: case12: days=31; break; case4: case6: case9: case11: days=30; break; case2: if(isLeap) days=29; else days=28; break; } returndays; } /** *判断闰年的条件: 如果年份值能被4整除且不能被100整除,或者能被400整除,就是闰年,否则不是 * *@paramyear *@return */ publicstaticbooleanisLeap(intyear){ if(year%4==0&&year%100! =0){ returntrue; } if(year%400==0){ returntrue; } returnfalse; } } packagecom.sailor.game; importjava.util.Scanner; /** *题目: 输入某年某月某日,判断这一天是这一年的第几天? *程序分析: 以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天, *特殊情况,闰年且输入月份大于3时需考虑多加一天。 * *@authorSailor * */ publicclassCompute_Day{ publicstaticvoidmain(String[]args){ Scannerin=newScanner(System.in); System.out.println("请依次输入年、月、日: "); intyear=in.nextInt(); intmonth=in.nextInt(); intday=in.nextInt(); intdays=0; booleanisLeap=isLeap(year); for(inti=1;i days+=getDays(i,isLeap); } System.out.println("这是今年的第"+(days+day)+"天"); } publicstaticintgetDays(intmonth,booleanisLeap){ intdays=0; switch(month){ case1: case3: case5: case7: case8: case10: case12: days=31; break; case4: case6: case9: case11: days=30; break; case2: if(isLeap) days=29; else days=28; break; } returndays; } /** *判断闰年的条件: 如果年份值能被4整除且不能被100整除,或者能被400整除,就是闰年,否则不是 * *@paramyear *@return */ publicstaticbooleanisLeap(intyear){ if(year%4==0&&year%100! =0){ returntrue; } if(year%400==0){ returntrue
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 经典 基础 代码