java基础编程练习题及解答
来源:互联网 发布:阿洋个人发卡平台源码 编辑:程序博客网 时间:2024/05/29 09:13
java基础编程练习题及解答
虽然说这些题目好多人做过,但是也考考自己对编程的解决方法吧,不对的地方希望大家私信我,谢谢!!!
实例1:
/*题目:判断101-200之间有多少个素数,并输出所有素数。 素数又叫质数,就是除了1和它本身之外,再也没有整数能被它整除的数。也就是素数只有两个因子。*/import java.util.Arrays;public class HelloWorld { public static void main(String []args) { //计算质子个数,与非质子个数 int indexs = 0; int index = 0; for(int i=101;i<=200;i++){ if((i%2!=0)&(i%3!=0)&(i%5!=0)&(i%7!=0)){ indexs++; }else{ index++; } } System.out.println(indexs); System.out.println(index); int[] nums = new int[indexs]; int[] num = new int[index]; int x = 0; int y = 0; for(int i=101;i<=200;i++){ if((i%2!=0)&(i%3!=0)&(i%5!=0)&(i%7!=0)){ nums[x] = i; x++; }else{ num[y] = i; y++; } } System.out.println(Arrays.toString(nums)); System.out.println(Arrays.toString(num)); }}
实例2:
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。想当年,做这些题都是网上找答案,如今事过境迁,不会也得会。package test;public class demo1 { public static void main(String[] args) { //定义个位,十位,百位 int a,b,c; int sum,mul; for(int i=100;i<=999;i++){ a = i/100; b = (i-a*100)/10; c = (i-a*100-b*10); sum = a*a*a+b*b*b+c*c*c; mul = a*100+b*10+c; if(sum == mul){ System.out.println(a+""+b+""+c); } } }}
实例3:
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。原谅我,这题我作弊了,哈哈,做的时候有点懵逼啊。但是最后我还是靠自己 又写出一遍来,哈哈。。。package test;import java.util.Scanner;public class demo2 { public static void main(String[] args) { //匹配数字正则 String reg = "[1-9]\\d{0,}"; @SuppressWarnings("resource") //创建扫描器对象 Scanner scanner = new Scanner(System.in); System.out.println("请输入一个正整数:"); //循环 while(true){ String str = scanner.next(); //String强制转换int int num = Integer.parseInt(str); //匹配数字 if(str.matches(reg)){ System.out.println("合法数字"); if(num!=1){ System.out.print(num + "是有效的被分解数"); int index = 2; if(num == 2){ System.out.println(num+"分解后的质因数为: 1*"+num); //如果输入的是最小质数2 }else{ System.out.print(num+"分解后的质因数为: 1"); //1是所有的正整数的质数 while(num>=index){ //输入的数可以被k整除 if(num%index==0){ System.out.print("*"+index); //将k添加到结果中 num = num/index;//除以最小质数后重新循环 }else{ index++; } //if } //while }//if }else{ System.out.print(num + "是无效的被分解数"); }//if }else{ System.out.println("非法数字"); }//if }//while }}
实例4:
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 package test;import java.util.Scanner;public class demo3 { public static void main(String[] args) { @SuppressWarnings("resource") Scanner scanner = new Scanner(System.in); while(true){ System.out.println("请输入成绩"); int score = scanner.nextInt(); if((score >= 90)&(score<100)){ System.out.println("A"); }else if((score >= 60)&(score<89)){ System.out.println("B"); }else if((score >= 0)&(score<59)){ System.out.println("C"); }else{ System.out.println("恭喜你,你的成绩不合理"); } } }}
实例5:
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。方法1:package test;import java.util.Scanner;public class demo4 { @SuppressWarnings("unused") public static void main(String[] args) { //计算字母,空格,数字,其他字符个数 int abcCount = 0; String abcreg = "[a-zA-Z]"; int spaceCount = 0; int numCount = 0; String numreg = "[0-9]"; int otherCount = 0; @SuppressWarnings("resource") Scanner scanner = new Scanner(System.in); String str = scanner.nextLine(); char[] ch = str.toCharArray(); for(int i=0;i<ch.length;i++){ if((""+ch[i]).matches(abcreg)){ abcCount++; }else if((""+ch[i]).matches(abcreg)){ spaceCount++; }else if((""+ch[i]).matches(numreg)){ numCount++; }else{ otherCount++; } } System.out.println("字母个数:"+abcCount); System.out.println("数字个数:"+numCount); System.out.println("空格个数:"+spaceCount); System.out.println("其他字符个数:"+otherCount); }}方法2: import java.util.Scanner; public class Example { public static void main(String[] args) { // TODO Auto-generated method stub int abcCount=0;//英文字母个数 int spaceCount=0;//空格键个数 int numCount=0;//数字个数 int otherCount=0;//其他字符个数 Scanner scan=new Scanner(System.in); String str=scan.nextLine(); char[] ch = str.toCharArray(); for(int i=0;i<ch.length;i++){ if(Character.isLetter(ch[i])){ //判断是否字母 abcCount++; } else if(Character.isDigit(ch[i])){ //判断是否数字 numCount++; } else if(Character.isSpaceChar(ch[i])){ //判断是否空格键 spaceCount++; } else{ //以上都不是则认为是其他字符 otherCount++; } } System.out.println("字母个数:"+abcCount); System.out.println("数字个数:"+numCount); System.out.println("空格个数:"+spaceCount); System.out.println("其他字符个数:"+otherCount); } } 说说我在方法1遇到的困难:1.一开始ch[i]匹配正则的时候总是给我报错,但是我知道ch[i]是没有错的,我也把它强制转换为String类型,但是各种报错使得我想方法使它能变成String类型,于是在前面加了一个"",会自动编译成String类型。2.当我匹配空格的时候,发现会自动停止,就是计算不了空格的个数,还会使程序停止,这肯定是不行的,所以我百度了下,原来是出问题在nextInt(),nextLine(),next()获取值上。next() 以空格作为分隔符nextLine() 以行作为分隔符3.完成了方法1后,方法2就简单了,于是就是Character.is...()判断一下就行了。
实例6:
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 package test;import java.util.Scanner;import static java.lang.Math.pow; public class demo6 { public static void main(String[] args) { String reg = "\\d"; @SuppressWarnings("resource") Scanner scanner = new Scanner(System.in); while(true){ int num = scanner.nextInt(); int nums = scanner.nextInt(); if ((""+num).matches(reg)) { num = Sum(num,nums); System.out.println(num); }else{ System.out.println("请输入一个数字"); } } }// @SuppressWarnings("unused") public static int Sum(int num,int nums){ int total = 0; int count=0; int nowData = 0; int lastData = 0; while(count < nums){ nowData = num * (int)pow(10,count++) + lastData; total = total + nowData; lastData = nowData; System.out.println(nowData); } return total; }}
实例7:
package test;/*题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数。*/public class demo7 { public static void main(String[] args) { for(int num=1;num<1000;num++){ int sum = 0; for(int i=1;i<num;i++){ if(num % i == 0){ sum = sum+i; } } if(sum == num){ System.out.println(sum); } } }}
实例8:
package test;/*题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?因为最后的高度小于1,所以把int类型改为double类型*/public class demo8{ public static void main(String[] args) { //球的高度 double height = 100; //经历的距离 double sum = 0; for(int index = 1;index<=10;index++){ sum += height; System.out.println("第"+index+"次落地高度" + height + "米经过"+sum+"米"); height = height/2; sum += height; System.out.println("第"+index+"次落地后反跳回" + height + "米经过"+sum+"米"); } }}
实例9:
package test;/*题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? */public class demo9 { public static void main(String[] args) { for(int i=1;i<5;i++){ for(int j=1;j<5;j++){ for(int k=1;k<5;k++){ for(int l=1;l<5;l++){ if((i!=j)&(i!=k)&(i!=l)&(j!=k)&(j!=l)&(k!=l)){ System.out.println(i+""+j+""+k+""+l); } } } } } }}
实例9:
package test;import java.util.Scanner;/*题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? */public class demo10 { public static void main(String[] args){ @SuppressWarnings("resource") Scanner scanner = new Scanner(System.in); double profit = scanner.nextDouble(); double money = 0; if(profit <= 100000){ money = profit * 0.1; }else if(profit < 200000){ money = 100000 * 0.1 + (profit - 100000) * 0.075; }else if(profit < 400000){ money = 200000 * 0.1 + (profit - 200000) * 0.05; }else if(profit < 600000){ money = 400000 * 0.1 +(profit - 400000) * 0.03; }else if(profit < 1000000){ money = 600000 * 0.1 +(profit - 600000) * 0.15; }else{ money = 1000000 * 0.1 +(profit - 1000000) * 0.01; } System.out.println(money); } }
实例10:
package test;import java.util.Scanner;/*一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少 sqrt(156+100)=16 sqrt(156+1168)=18 */ public class demo11 { public static void main(String[] args) { @SuppressWarnings({ "resource", "unused" }) Scanner scanner = new Scanner(System.in); int num=0; System.out.println(Math.sqrt(156+100)); System.out.println(Math.sqrt(156+168)); while(true){ if((Sqrt(num+100) == true)&&(Sqrt(num+168) == true)){ System.out.println(num); break; } num++; } } public static boolean Sqrt(int num){ if((int)Math.sqrt(num)*(int)Math.sqrt(num)==num){ return true; }else{ return false; } }}
实例11:
package test;import java.util.Scanner;/*题目:输入三个整数x,y,z,请把这三个数由小到大输出。 */public class demo12 { public static void main(String[] args) { @SuppressWarnings("resource") Scanner scanner = new Scanner(System.in); while(true){ int temo = 0; int x = scanner.nextInt(); int y = scanner.nextInt(); int z = scanner.nextInt(); if(x>y){ temo=x; x=y; y=temo; } if(x>z){ temo=x; x=z; z=temo; } if(y>z){ temo=y; y=z; z=temo; }System.out.println(x+""+y+""+z); } }}
实例12:
package test;import javax.security.auth.Subject;/*题目:输出9*9口诀。 */public class demo13 { public static void main(String[] args) { int i,j,Sub; for(i=1;i<10;i++){ for(j=1;j<10;j++){ Sub = i*j; System.out.print(i+"*"+j+"="+Sub+"\t"); } System.out.println(""); } }}
实例13:
package test;import java.util.Scanner;/*题目:输入某年某月某日,判断这一天是这一年的第几天? */public class demo14 { @SuppressWarnings("unused") public static void main(String[] args) { int year,month,day; int[] data = {31,28,31,30,31,30,31,31,30,31,30,31}; @SuppressWarnings("resource") Scanner scanner = new Scanner(System.in); System.out.print("请输入年份:"); year = scanner.nextInt(); System.out.print("请输入月份:"); month = scanner.nextInt(); System.out.print("请输入几号:"); day = scanner.nextInt(); int sum = 0; for(int i=0;i<month-1;i++){ sum += data[i]; } if ((year%400==0||(year%4==0&&year%100!=0))&&(month>2)){ sum += 1; } System.out.println(sum+day); }}
实例14:
package test;/*题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。*/public class demo15 { public static void main(String[] args) { int amount;//总数 int num = 0;//定义每天剩下的桃子数 ;//天数 for(int day=10;day>0;day--){ if(day==10){ num=1; amount = num; System.out.println("第"+day+"天有"+amount+"个桃子"); }else{ amount = (num+1)*2; num = amount; System.out.println("第"+day+"天有"+amount+"个桃子"); } } }}/*规律:(最后一天的桃子+1)*2 = 前一天剩下的桃子amount=(amount/2 - 1) ...amount=(amount/2 - 1) ...amount=(amount/2 - 1) ...amount=(amount/2 - 1) ...amount=(amount/2 - 1) ...amount=(amount/2 - 1) 46/2-1=22amount=(amount/2 - 1) 22/2-1=10amount=(amount/2 - 1) 10/2-1=4amount=(amount/2 - 1) 4/2-1=1amount=1第10天有1个桃子第9天有4个桃子第8天有10个桃子第7天有22个桃子第6天有46个桃子第5天有94个桃子第4天有190个桃子第3天有382个桃子第2天有766个桃子第1天有1534个桃子*/
实例15:
package test;/*题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。*/public class demo16 { public static void main(String[] args) { for(char i ='x';i<='z';i++){ for(char j ='x';j<='z';j++){ if(i!=j)//这里放一个判断,比赛队员不能重复比赛,判断写在外面又可以减少循环次数 for(char k = 'x';k<='z';k++){ if(i!=k&&j!=k)//同上,排除相同 if(i!='x'&&k!='x'&&k!='z')//这里根据题意排除掉不符合的名单 System.out.println("a和"+i+"\n"+"b和"+j+"\n"+"c和"+k+"\n"); } } } }}
实例16:
package test;/*题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。*/public class demo17 { public static void main(String[] args) { double[] a = new double[20]; double up=2; double down=1; double time = 0; for(int i=0;i<20;i++){ a[i] = up/down; time = down; down=up; up=time+down; System.out.println(a[i]); } }}
实例17:
package test;import java.util.Scanner;/*题目:求1+2!+3!+...+20!的和 */public class demo18 { public static void main(String[] args) { //计算总值 int amount = 0; //阶乘数 int sum = 0; @SuppressWarnings("resource") Scanner scanner = new Scanner(System.in); System.out.println("请输入阶乘数:"); int num = scanner.nextInt(); for(int i=1;i<=num;i++){ sum = jiecheng(i); if(i<num){ System.out.print(i+"!+"); }else{ System.out.print(i+"!="); } amount += sum; } System.out.println(amount); } //处于每个阶乘返回的值 public static int jiecheng(int num){ int sum = 1; for(int i=1;i<=num;i++){ sum *= i; } return sum; }}
实例18:
package test;/*题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大? 1: 102: 说比第一个人大两岁3: 又说比第2人大两岁4: 他说比第3个人大2岁5: 他说比第4个人大2岁*/public class demo19 { public static void main(String[] args) { System.out.println(getAge(2)); } public static int getAge(int num){ if(num==1){ return 10; }else{ return getAge(num-1)+2; } }}
阅读全文
1 0
- java基础编程练习题及解答
- Java程序语言(基础篇)第2章 基本程序设计 编程练习题解答
- 基础Java语言编程练习题
- 第一章 计算机、程序和Java概述 编程练习题解答
- String重点、练习题及解答
- JAVA基础编程练习题--50道
- JAVA基础编程练习题--50道
- java语言程序设计基础篇第一章编程练习题
- 50道JAVA基础编程练习题
- 50道JAVA基础编程练习题
- 50道JAVA基础编程练习题
- 50道Java基础编程练习题
- 50 道 Java 基础编程练习题
- Java基础练习题 (7)网络编程
- 50道JAVA基础编程练习题
- 50道JAVA基础编程练习题(1)
- 50道JAVA基础编程练习题
- 转载:JAVA基础编程练习题--50道
- input 输入框禁止输入小数点
- 使用ajax提交form表单,包括ajax文件上传
- Ant+Jmeter 批量执行脚本
- C计算1/1-1/2+1/3-1/4+1/5 …… + 1/99
- Asynchronous Advantage Actor-Critic (A3C)实现cart-pole
- java基础编程练习题及解答
- android 4.1.1 setColorFilter bug解决
- 面向对象程序设计上机练习十二(运算符重载)
- vue基于vue-cli的项目搭建及部分依赖的添加
- eclipse安装Hudson/Jenkins插件
- 借助第三方,java长链接转短链接,IP域名同样支持
- nginx url中带中文不能访问
- 浮动IP(FLOAT IP)
- 蓝桥杯ALGO-5算法训练 最短路