这是我在课余时间手敲的一些练习题
做以记录,希望我自己可以坚持下去,代码很粗糙,如有不足的地方还请各位大佬给予更好的方法
package week1; public class Demo1 { /*接受用户传入的三个整数,并将它们的最大值作为结果输出*/ private void GetMaxNumber(int a, int b, int c) { int max = (a > b) ? a : b; System.out.println(a + "\t" + b + "\t" + c + "的最大值是" + ((max > c) ? max : c)); } public static void main(String[] args) { Demo1 dy = new Demo1(); dy.GetMaxNumber(3, 4, 5); } }
package week1; public class Demo2 { private void GetBmi(double height,double weight){ double bmi=weight/(height*height); if(bmi<18.5) System.out.println("过轻"); else if(bmi<22.9) System.out.println("正常"); else if(bmi<24.9) System.out.println("偏胖"); else if(bmi<29.9) System.out.println("肥胖"); else if(bmi<40) System.out.println("重度肥胖"); else System.out.println("极度肥胖"); } public static void main(String[] args) { Demo2 dy1 = new Demo2(); dy1.GetBmi(1.8,67.5); } }
package week1; import java.util.Scanner; public class Demo3 { /*手机选号,根据用户输入的手机号来确认用户实际支付的价格 *如果尾数为8,需支付办卡费50元 * 如果尾数为4,需支付办卡费0元 * 如果是其他尾号,需支付办卡费用20元 * */ public static void main(String[] args) { //提示并接收用户输入的手机号 System.out.println("请输入您要预选的手机号:"); String tel = new Scanner(System.in).nextLine();//String类型数据一般用nextline() getPrice(tel); } //创建getprice方法 //被static修饰的方法在类加载的时候执行 public static void getPrice(String tel){ //手机号tel的长度,必须是11位的正确手机号--提前校验,提高程序健壮性 if(tel.length()!=11){ System.out.println("号码格式错误!!"); } //获取手机号的尾数 char ws = tel.charAt(10);//位数是11,范围是0到length-1,charAt()方法是获取指定位数上的值 //定义用来保存最终结果的变量price,初始化为零 int price = 0; //根据ws字符的值,来为price重新赋值 switch (ws){ case '8':price=50;break;//若尾数为八,则价格为50 case '4':price=0;break;//若尾数为4,则价格为零 default:price=20;//其他尾数的价格为20 } System.out.println("您实际应支付的价格为"+price); } }
package week1; public class Demo4 { /*分别通过for循环、while循环、do-while循环写一个死循环*/ private void Forsx(){ for(int i=1;i>0;i++){ System.out.println("ldsb"); } } private void Whilesx(){ while (true){ System.out.println("zjh是真的帅"); } } private void Do_Whilesx(){ do{ System.out.println("我心有静"); }while (true); } public static void main(String[] args) { Demo4 dy = new Demo4(); //dy.Do_Whilesx();//do-whlie的死循环 //dy.Forsx();//for循环的死循环 dy.Whilesx();//whlie的死循环 } }
package week1; public class Demo5 { /*鸡兔同笼问题 *已知鸡兔共有35只,共94只脚,那么鸡兔各几只? * * */ public static void main(String[] args) { //循环变量j定义鸡,循环变量t定义兔 //穷举法;定义鸡从零到35,兔从35到0; for (int j = 0,t=35; j <=35&&t>=0; t--,j++) { if(2*j+4*t==94){ System.out.print("鸡有"+j+"只"+"\n"+"兔有"+t+"只"); break; } } } }
package week1; import java.util.Scanner; public class Demo6 { /*求数字阶乘(for循环版) *需求:接收用户输入的数字,计算该数字的阶乘结果 * 已知:负数不可以有阶乘,0的阶乘是1 * 5!=5*4*3*2*1 */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入需要计算阶乘的数字:"); int a = sc.nextInt();//接收用户输入的数字 if(a<0){//负数不能求阶乘 System.out.println("负数不能求阶乘"); } else if (a == 0) {//特殊情况,当用户输入的数字为0时,0!=1 System.out.println("0!=1"); } else { System.out.print(a+"!="); for (int i = a - 1; i > 0; i--) { a = a * i; } System.out.println(a); } } }
package week1; public class Demo7 { /* 多次生成随机数,并打印第一次出现大于0.999 时的次数与生成的随机数 */ public static void main(String[] args) { int i = 0;//用i来记录生成的次数 //循环次数未知的情况下使用while循环 while (true) { double a = Math.random();//在区间[0,1)上随机生成一个数 if(a>0.999){ System.out.println("第一次出现大于0.999的随机数是"+a+"生成的次数为"+i); break; } i++; } } }
package week1; public class Demo8 { /* 打印100以内除了尾数为3,5,7的所有数 */ public static void main(String[] args) { System.out.println("100以内除了尾数为3,5,7的所有数为:"); for (int i=1;i<100;i++){ int a = i%10;//100以内的数通过除10取余得出尾数,将尾数赋给变量a if(a==3||a==5||a==7){ continue;//跳过本次循环执行下一条语句 } System.out.print(i+"\t"); } } }
package week2; import java.util.Scanner; public class Demo9 { /* 求质数:接收用户输入的数字,判断是否为质数 质数的概念:一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数,也称为素数 规定:1既不是质数,也不是合数 */ //静态方法判断所输入的数是否为质数 public static void getPrimenumber(int a){ if (a < 2) {//这个范围内的数都不是质数 System.out.println(a+"不是质数"); return; } if (a == 2) { System.out.println("2是质数"); return; } for (int i = 2; i < a; i++) { if (a % i == 0) { System.out.println(a + "不是质数"); return;//return结束程序 } } System.out.println(a + "是质数"); } public static void main(String[] args) { System.out.println("请输入一个自然数:"); int a = new Scanner(System.in).nextInt(); getPrimenumber(a); } }
package week2; import java.util.Scanner; public class Demo10 { /* 接收用户输入的数字,判断在此范围内质数的个数 */ public static void main(String[] args) { System.out.println("请输入一个自然数:"); int x = new Scanner(System.in).nextInt(); if(x<2){ System.out.println("此范围内没有质数"); return; } if(x==2){ System.out.println("有一个质数"); return;//结束程序 } int count=1; flag: for (int i = 3; i < x; i++) {//i从3开始,说明已经将2是质数计入count中,每次拿到一个i与 j到i 的数进行取余操作 for (int j = 2; j < i; j++) { if(i%j==0){ //结束本次循环执行下一条语句,这里是跳到标记点flag处 continue flag;//当i整除j时,说明i不是质数,continue flag;跳出循环判断下一个i } } //内层循环j结束,i是质数,count+1 count++; } System.out.println(count); } }
package week2; import java.util.Scanner; public class Demo12 { /* 求数字阶乘(递归解法版) 需求:接收用户输入的数字,计算该数字的阶乘结果 已知:负数不可以有阶乘,0的阶乘结果是1, 5 ! = 5 x 4 x 3 x 2 x 1=120 */ /**递归的两要素 1.总结规律 2.最简问题*/ private static int diGui(int n){ if(n==1){//最简问题 return 1; }else{//其他情况 n*diGui(n-1) //递归:在方法内部自己调用自己 return n*diGui(n-1); } } public static void main(String[] args) { System.out.println("请输入一个大于零的自然数:"); int n = new Scanner(System.in).nextInt(); int c=diGui(n);//调用digui(n)来求n的阶乘 System.out.println("由递归算法求得的"+n+"的阶乘为"+c); } }
package week2; import java.util.Scanner; public class Demo13 { /* 打印全三角形 需求:接收用户输入的行数,打印对应的全三角形 */ private static void printQusanjiao(int h){ /* 开始打印全三角行 外层循环决定星星打印的行数 */ for (int i = 0; i <= h; i++) { //控制每行打印空格的个数 for (int k = 0; k < h-i; k++) {//加空格 System.out.print(" "); } /* 控制每行打印星星的个数j的范围是0到2*i-1左闭右开 */ for (int j = 0; j <2*i-1; j++) {//打印* System.out.print("*"); } System.out.println();//每打印一行就进行换行 } } public static void main(String[] args) { System.out.println("请你输入需要打印的星星行数:"); int h = new Scanner(System.in).nextInt(); printQusanjiao(h); } }
持续更新中…