JAVA小白编程题练习
可能有很多刚入门的小白不知道自己如何能快速提升编程技巧与熟练度
其实大佬进阶之路只有一个~ 那就是疯狂码代码!!!实践出真知!!!
所以为了大家能够想练习的时候有素材,泡泡给大家整理了一些练习题
由于平时比较忙,所以我在不定时努力更新中,欢迎监督~
500是立的Flag啊哈哈哈哈,我们共同努力吧,先出个100道,希望能给大家带来帮助~
😃😃😃
练习题1:接收用户输入的3个整数,并将它们的最大值作为结果输出
package cn.cxy.exec;import java.util.Scanner;public class GetMaxNumber {public static void main(String[] args) {//1.提示并接收用户输入的三个整数,并交由变量a b c来保存System.out.println("请输入第一个整数:");int a = new Scanner(System.in).nextInt();System.out.println("请输入第二个整数:");int b = new Scanner(System.in).nextInt();System.out.println("请输入第三个整数:");int c = new Scanner(System.in).nextInt();//2.对接收到的三个值进行比较/**三元运算符 1 ? 2 : 3* 如果1号位置的表达式结果为true,结果就取2号位置的值,反之,就取3号位置的值*///2.1定义变量max来保存a和b中的最大值int max = a>b ? a : b;//2.2比较max与c谁最大,并将最大值交由max来保存max = max>c ? max : c;/**解决方案二:*///int max = a>b?(a>c?a:c):(b>c?b:c);//3.输出结果System.out.println("三个数的最大值是:"+max);}}
练习题2: BMI 指数测试 BMI = 体重 (kg) / 身高² (m)
接收用户输入的身高和体重,将判断结果输出
过轻:低于18.5
正常:18.5 ~ 22.9
偏胖:23 ~ 24.9
肥胖:25 ~ 29.9
重度肥胖:高于30
极度肥胖:高于40
package cn.cxy.exec;import java.util.Scanner;public class TestBMI {public static void main(String[] args) {//1.提示并接收用户输入的身高与体重信息System.out.print("请输入您的身高(单位为m):");double height = new Scanner(System.in).nextDouble();System.out.print("请输入您的体重(单位为kg):");double weight = new Scanner(System.in).nextDouble();//2.调用getBMI()方法,根据身高和体重信息,输出结果getBMI(height, weight);}public static void getBMI(double h, double w) {//求出BMI指数double bmi = w / (h * h);//定义一个变量r来保存最终结果String r = "";//根据 bmi 指数范围,来给r重新赋值if (bmi < 18.5) {r = "过轻";} else if (bmi <= 22.9) {r = "正常";} else if (bmi <= 24.9) {r = "偏胖";} else if (bmi <= 29.9) {r = "肥胖";} else if (bmi <= 40) {r = "重度肥胖";} else {r = "极度肥胖";}//打印最终结果System.out.println("您的BMI指数:" + bmi);System.out.println("您的体重属于:" + r);}}
练习题3: 手机选号:根据用户输入的手机号来确认用户实际支付的价格
如果尾数为8,需支付办卡费50元
如果尾数为4,需支付办卡费用0元
如果是其他尾号,需支付办卡费用20元
package cn.cxy.exec;import java.util.Scanner;public class PayCard {public static void main(String[] args) {//1.提示并接收用户输入的手机号System.out.println("请输入您预选的手机号:");String tel = new Scanner(System.in).nextLine();//注意String类型数据一般用nextLine()//2.调用getPrice()方法,来计算价格,注意需要把手机号tel作为参数传入方法中getPrice(tel);}//3.创建getPrice()public static void getPrice(String tel) {//3.1 手机号tel的长度,必须是11位的正确手机号--提前校验,提高程序健壮性if(tel.length() != 11) {System.out.println("号码格式错误");return;//结束方法,返回到调用位置再继续执行}/*比如我们拿到的手机号是tel="2313123123",想要拿到尾数,也就是最后一个字符* 需要用到 char c = tel.charAt(10)* 注意:由于下标也是从0开始,所以取第11个字符,它的下标位置是10*///3.2获取手机号的尾数char c = tel.charAt(10);//3.2定义用来保存最终结果的变量price,初始值为0int price = 0;//3.3根据c字符的值,来为price重新赋值switch(c) {case '8': price=50; break;//尾数为8支付50case '4': price=0; break;//尾数为4免费default: price=20;//其他情况需支付20}//3.4显示结果System.out.println("您实际应支付的价格为:"+price);}}
练习题4 : 分别通过for循环/While循环/do-While循环写一个死循环
package cn.cxy.exec;public class DeadCycle {public static void main(String[] args) {//for循环的死循环// for (int i = 1; ; i++){// System.out.println("欢迎学习泡泡的分享,继续加油哦~");// }//while循环的死循环// while(true){// System.out.println("都到这里啦?奥利给~");// }//do-while循环的死循环do{System.out.println("相信我们可以的~");}while(true);}}
练习题5:鸡兔同笼问题(穷举法)
已知:鸡兔共35只,共94只脚,那么鸡和兔各几只?package cn.cxy.exec;//穷举法//鸡 兔//0 35//1 34//2 33//3 32//...//23 12//...//35 0public class SameCage {public static void main(String[] args) {//循环变量j,控制小鸡的个数: 0到35递增//循环变量t,控制兔子的个数: 35到0递减for(int j=0,t=35; j<=35; j++,t--) {//如果有多个小条件,用逗号隔开//保证脚的数量是94if(j*2 + t*4 == 94) {System.out.println("鸡:"+j+", 兔:"+t);}}}}
练习题6:求数字阶乘(for循环版)
需求:接收用户输入的数字,计算该数字的阶乘结果
已知:负数不可以有阶乘,0的阶乘结果是1,
5 ! = 5 x 4 x 3 x 2 x 1
package cn.cxy.exec;import java.util.Scanner;public class Factorial {public static void main(String[] args) {System.out.print("输入整数,求阶乘:");int n = new Scanner(System.in).nextInt();//调用f()方法,把n的值传递到f()方法,求阶乘f(n);}public static void f(int n) {if(n<0) {System.out.println("负数不可以求阶乘");return;//方法结束,返回到调用位置继续执行}if(n == 0) {System.out.println("0的阶乘是1");return;}/** r = 5* i* 4, r=r*i* 3, r=r*i* 2, r=r*i* 1, r=r*i*/long r = n;for(int i=n-1; i>=1; i--) {r *= i;}System.out.println(n+"的阶乘:"+r);}}/**其实我们还可以通过递归思想解决这个问题,感兴趣的可以研究一下~*/
练习题7:多次生成随机数,并打印第一次出现大于0.999 时的次数与生成的随机数
package cn.cxy.exec;public class ForBreak {public static void main(String[] args) {// Math.random()可以产生[0,1)的随机浮点数// >0.999//写一个死循环, i变量用来计次for(int i=1; ;i++) {double d = Math.random();if(d>0.999) {System.out.println("第"+i+"次产生了目标值,值为:"+d);break;}}}}
练习题8:打印100以内除了尾数为3,5,7的所有数
package cn.cxy.exec;public class ForContinue {public static void main(String[] args) {for(int i=1;i<=100;i++) {int y = i%10;//100以内的数,通过取余求出尾数if(y==3 || y==5 || y==7) {continue;//如果尾数为3 5 7 ,则跳过后面的打印,进行下一轮循环}System.out.println(i);}}}
练习题9:求质数:接收用户输入的数字,判断是否为质数
质数的概念:一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数,也称为素数
规定:1既不是质数,也不是合数
package cn.cxy.exec;import java.util.Scanner;public class PrimeNumber {public static void main(String[] args) {System.out.print("请输入要判断的自然数:");int n = new Scanner(System.in).nextInt();//调用getPrimeNumber()方法,判断n是否为质数getPrimeNumber(n);}public static void getPrimeNumber(int n) {if(n<2) {//此范围内的数均不为质数System.out.println(n+"不是质数");return;//结束程序}if(n == 2) {System.out.println("2是质数");return;}//在 2到 1+n开方范围(数学理论),找能把n整除的值(这个值也称作因子)//如果找到可以把n整除的第三个数,那n就不是质数,反之,n为质数double max = 1+ Math.sqrt(n);//max保存的是查找因子的范围//依次遍历范围内的所有数,验证是否存在n的因子for(int i=2; i<max; i++) {//判断n能不能被i整除,如果有,说明不是质数if(n%i == 0) {System.out.println(n+"不是质数");return;}}//如果判断了范围内的所有值,没有能整除的,则说明n是质数System.out.println(n+"是质数");}}
练习题10:接收用户输入的数字,判断在此范围内质数的个数
package cn.cxy.exec;import java.util.Scanner;public class CountPrimeNumber {public static void main(String[] args) {System.out.println("输入整数n,求n内质数的数量");int n = new Scanner(System.in).nextInt();count(n);}public static void count(int n) {if(n<2) {System.out.println("没有质数");return;}if(n==2) {System.out.println("有1个质数");return;}//定义计数变量int count = 1;//已知有一个质数outer: //从3到n寻找质数for(int i=3; i<=n ;i++) {//判断i是否是质数double max = 1+ Math.sqrt(i);for(int j=2; j<max; j++) {//在2到<max,找能把i整除的数if(i%j == 0) {//i被j整除,i不是质数//跳到i++,继续判断下一个i值continue outer;//跳到外部outer的位置}}//内层j循环结束,i是质数count++;}System.out.println(n+"内质数的数量:"+count);}}
练习题11:生成一个顺序数组,将这个数组的元素打乱顺序后输出
package cn.cxy.exec;import java.util.Arrays;import java.util.Random;public class ShuffleArray {public static void main(String[] args) {//调用f()方法,从方法获取一个int[]数组int[] a = f();//遍历打印数组数据for(int i=0; i<a.length; i++) {System.out.println(a[i]);}System.out.println("\\n\\n----------------");//把a数组,传递到 shuffle() 方法打乱顺序shuffle(a);//打印乱序后的数组System.out.println(Arrays.toString(a));}public static int[] f() {//新建int[]数组,长度5//再把它的内存地址存到变量 aint[] a = new int[5];//遍历访问5个位置,填入1,2,3,4,5for(int i=0; i<a.length; i++) {a[i] = i+1;}//返回数组,把数组返回到调用位置//本质是把数组地址返回去return a;}public static void shuffle(int[] a) {/** j* [4, 2, 3, 1, 5]* i** *) i循环遍历数组* *) 随机定位下标j与i交换*/for (int i = 0; i < a.length; i++) {//随机下标j,范围:[0, a.length)int j = new Random().nextInt(a.length);int t = a[i];a[i] = a[j];a[j] = t;}}}
练习题12:求数字阶乘(递归解法版)
需求:接收用户输入的数字,计算该数字的阶乘结果已知:负数不可以有阶乘,0的阶乘结果是1,5 ! = 5 x 4 x 3 x 2 x 1package cn.tedu.design;//需求:求用户输入数字的阶乘结果//f(int n)--用来求阶乘//规律://f(n)= n*f(n-1)//f(5)= 5*4*3*2*1 = 5*f(4)//f(4)= 4*3*2*1 = 4*f(3)//f(3)= 3*2*1 = 3*f(2)//f(2)= 2*1 = 2*f(1)//f(1)= 1////5!=5*4*3*2*1=120//4!=4*3*2*1//3!=3*2*1//2!=2*1//1!=1public class TestRecursion {public static void main(String[] args) {int result = f(15);//调用f()用来求阶乘System.out.println(result);}/**递归的两要素 1.总结规律 2.最简问题*/public static int f(int n) {if(n == 1) {//最简问题return 1;}else {//其他情况 n*f(n-1)//递归:再方法内部自己调用自己return n*f(n-1);}}}