目录
星光不负赶路人,加油铁子们!!!
1.输出一个整数的每一位
题目:
输出一个整数的每一位,如:123的每一位是3,2,1
思路:
本题主要考虑,如何获取一个数字的每一位:
123 % 10 = 3
123/10=12 12%10=2
12/10=1 1%10= 1
代码如下:
- public class Main {
- public static void main(String[] args) {
- Scanner scan = new Scanner(System.in);
- int num = scan.nextInt();
- while(num != 0){
- int n = num % 10;
- num /= 10;
- System.out.print(n + " ");
- }
- }
- }
2.判定素数
题目:
给定一个数字,判定一个数字是否是素数
- 第1种方法,如果一个数字是素数,那么就只能整除1和自己本身。
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- int n = scanner.nextInt();
- int i;
- for (i = 2;i < n;i++) {
- if(n%i == 0) {
- System.out.println("n不是素数:"+n);
- break;
- }
- }
- if(i >= n) {
- System.out.println(n + "是素数");
- }
- }
- 第2种方式,任何一个数字n,都可以写成 n = a*b的形式。那么必然会有一个数字是小于等于n/2的。
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- int n = scanner.nextInt();
- int i;
- for (i = 2;i <= n/2;i++) {
- if(n%i == 0) {
- //System.out.println("n不是素数:"+n);
- break;
- }
- }
- if(i > n/2) {
- System.out.println(n + "是素数");
- }
- }
- 第3种方式:任何一个数字n,都可以写成 n = a*b的形式。那么必然会有一个数字是小于等于根号n的。
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- int n = scanner.nextInt();
- int i;
- for (i = 2;i <= Math.sqrt(n);i++) {
- if(n%i == 0) {
- //System.out.println("n不是素数:"+n);
- break;
- }
- }
- if(i > Math.sqrt(n)) {
- System.out.println(n + "是素数");
- }
- }
( 注:图片来自网络,如有侵权,请联系删除 )
3.求最大值方法的重载
题目:
在同一个类中定义多个方法:要求不仅可以求2个整数的最大值,还可以求3个小数的最大值?
思路:
做这道题,我们首先要明白重载如何实现!!
重载:1.方法名相同;2. 参数列表不同(数据类型,个数,顺序)3. 返回值无关
本题可以借助Java原生类Math当中的max方法求最大值,当然也可以自己通过If else进行比较。
Math的使用 不需要导入相关的包
- public static int max(int a,int b) {
- return Math.max(a,b);
- }
-
- public static double max(double a,double b,double c) {
-
- double m = Math.max(a,b);
- return Math.max(m,c);
- }
也可以这样写:
- public class Main {
- public static void main(String[] args) {
- int a = 10;
- int b = 20;
- int ret1 = max(a , b);
- System.out.println(ret1);
- double c = 2.23;
- double d = 1.32;
- double e = 5.52;
- double ret2 = max(c , d , e);
- System.out.println(ret2);
- }
-
- public static int max(int x, int y){
- return x >= y ? x : y;
- }
-
- public static double max(double x, double y, double z){
- return x >= y ? x >= z ? x : z : y >= z ? y : z;
- }
- }
4.输出闰年
题目:
输出 1000 - 2000 之间所有的闰年
思路:
首先要搞明白什么是闰年?简单的说,就是能够被 4整除且能被100整除 的年份;或者是能够被 400整除 的年份,即为闰年!
- public static void main(String[] args) {
- for (int year = 1000; year < 2000 ; year++) {
- if(year %4 == 0 && year%100 != 0 || year %400==0) {
- System.out.println(year + " 是闰年!");
- }
- }
- }
5.打印 X 图形
思路:
假设i代表行,j代表列,当i==j 或者 i+j+1 == n,此时为星号。其余的都是空格。
- import java.util.*;
-
-
- public class Main {
-
- public static void main(String[] args) {
- Scanner scan = new Scanner(System.in);
- while(scan.hasNextInt()) {
- int n = scan.nextInt();
-
- for(int i = 0;i < n;i++) {
- for(int j = 0;j < n;j++) {
- if(i == j) {
- System.out.print("*");
- }else if( i+j+1 == n) {
- System.out.print("*");
- }else{
- System.out.print(" ");
- }
- }
- System.out.println();
- }
- }
- }
- }
( 注:图片来自网络,如有侵权,请联系删除 )
6.数字9 出现的次数
题目:
编写程序数一下 1到 100 的所有整数中出现多少个数字9
思路:
本题主要考察,个位的9怎么判断,十位的9怎么判断?另外99是两个9.
- public static void main(String[] args) {
- int count = 0;
- for (int i = 1; i <= 100; i++) {
- if(i % 10 == 9) {//判断个位的9
- count++;
- }
- if(i/10 == 9) {
- count++;//判断十位的9
- }
- }
- System.out.println(count);
- }
7.计算分数的值
题目:
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值 。
思路:
1 从上述表达式可以分析出
该表达式主要由100项,奇数项为正,偶数项为负
2 设置一个循环从1~100,给出表达式中的每一项:1.0/i, 注意此处不能使用1,否则结果全部为0
然后使用flag标记控制奇偶项,奇数项为正,偶数项为负,然后将所有的项相加即可
- public static void main(String[] args) {
-
- double sum = 0;
- int flg = 1;
- for (int i = 1; i <= 100; i++) {
- sum += 1.0/i * flg;
- flg = -flg;
- }
- System.out.println(sum);
- }
8. 模拟登陆
题目:
编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序
思路:
本题注意考察,字符串怎么比较相同?使用方法equals。
- public static void main11(String[] args) {
- Scanner scanner = new Scanner(System.in);
-
- int count = 3;
-
- while (count != 0) {
- System.out.println("请输入你的密码:");
- String password = scanner.nextLine();
-
- //if(password == "123") { 这个判断相等是错误的,具体原因后续String章节进行讲解
-
- if(password.equals("123")) {
- System.out.println("登录成功!");
- break;
- }else {
- count--;
- System.out.println("你还有"+count+" 次机会!");
- }
- }
- }
( 注:图片来自网络,如有侵权,请联系删除 )
9.使用函数求最大值
题目:
创建方法求两个数的最大值max2,随后再写一个求3个数的最大值的函数max3。
要求:
在max3这个函数中,调用max2函数,来实现3个数的最大值计算
思路:
本题比较简单,重点在如何求出两个数的最大值
- public static int max2(int a,int b) {
- return a > b ? a:b;
- }
-
- public static int max3(int a,int b,int c) {
- int max = max2(a,b);
- return max > c ? max : c;
- }
- public static void main(String[] args) {
- System.out.println(max3(2, 5, 1));
- }
10.斐波那契数列
题目:
求斐波那契数列的第n项。(迭代实现)
思路:
斐波那契数列定义为:1 1 2 3 5 8 13 21 我们可以看到,从第3项开始,都等于前一项+前一项的前一项的和。3 = 1+2 、5 = 2+3 、13 = 5+8 。
我们可以先定义n1保存第一项的值,n2保存第2项的值,n3保存第3项的值。
每次算一个n3,就同步更新n1和n2的值。
- /**
-
- * 求菲薄那切数列的第n项
- * @param n
- * @return
- */
- import java.util.Scanner;
-
- //求斐波那契数列的第n项。(迭代实现)
- public class Main {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- int n = sc.nextInt();
- System.out.println(fib(n));
- }
-
- public static int fib(int n){
- if(n == 1 || n == 2){
- return 1;
- }
- int n1 = 1; // 1 1 2 3 5 8
- int n2 = 1;
- int n3 = 0;
- for(int i = 3;i <= n; i++){
- n3 = n1 + n2;
- n1 = n2;
- n2 = n3;
- }
- return n3;
- }
- }
( 注:图片来自网络,如有侵权,请联系删除 )
希望对大家有所帮助,感谢观看!!!
总结
这一年,我总共写了81篇博文。
分布在前端、后端、运维、测试等各个方面。
这些无一例外,都是我个人的经验总结,或学习笔记。以前,我更多是写用自己的个人笔记中,以便需要的时候查阅回顾。后来,看到越来越多的人使用csdn做技术分享,自己也逐渐养成了在这里分享的习惯,将博文公开,他人的指正就是对我的一次鞭策,他人的点赞就是对我的极大鼓励。
我发现,在这里,我更加有动力写博文,做分享。在工作的过程中,能更有意识的总结,这也让我自己的知识体系更加稳固,更加扎实全面。
同时,在这里能看见更多优秀的博文,更多努力奋斗的达人,让我自己学习到更多专业之外的知识,也让我认识到自己的不足。
- uniapp开发小程序
- Vue从入门到深入使用
- Python 从入门到深入
- Jenkins从零开始深入使用
- Android原生App开发
- SpringBoot 3.0 从入门到精通
- Docker从入门到精通
- 数仓从入门到熟练
- Sql Server高可用配置全解
技术总结 - Python
刚开始接触Python是在网上看见的爬虫程序,这让我眼前一亮,怎么会这么优雅直接。因为之前类似的功能,我用Java也实现过,代码量就不是一个数量级的。
后来,我主动去学习它的语法、开发工具,基本的程序能写了,别人的代码也能看懂了。但是并有工作中实际使用起来,至此告一段落。
近一年,公司的业务逐渐扩大,我就到可以用机器学习作为风控的辅助决策。学习已有的数据,形成自己的业务推测模型,再把新的数据参数输入后,推算出风控评估过。
这种程序我之前并没有做过。从网上了解到做机器学习主要是用Python,因为有很多成熟的类库可以使用。
于是,新一轮的Python机器学些开始了。
我知道了scikit、pandas、numpy、matplotlib等。我边学习,边记录,当然我还在学习中…
技术总结 - SpringBoot3
我从事Java开发工作很多年了,以下技术路线我全部经历了
struts2
- springmvn
- springboot1
- springboot2
- springboot3
工作中用过很多技术,也解决过很多技术难点。但总是在重复碰壁,重复解决,我意识到应该记录下来,让自己加深印象,也能在遇到问题的时候快速找到解决方案。
所以,有了一篇篇关于SpringBoot3的各种使用点击总结。这对我帮助很大,我在后来的工作中经常去查阅,帮助我快速解决问题。
SpringBoot3作为当前最优秀的Java后端框架,应该被充分推广使用。
我的专栏还会持续更新。
技术总结 - Vue
我是老程序员了,前端后端一直都是一起做的,在以前也没有前后端分离的概念。
后来,Vue等优秀的前端分离框架出来了,冒出了新岗位“前端工程师”,但是在很多小厂虽然与时俱进做了前后端分离的框架,但是,人不分。还是一个人按业务模块划分,从前端做到后端。这样其实有好处,降低了沟通的成本。只要前端框架要求不是非常高,开发效率完全优于前后端岗位分离的分工合作。
Vue这类的前端框架是一个伟大的创新,使得前端不在只是模板,而是一个独立的工程。
我从Vue2开始学习使用,一开始觉得乱乱的,后来弄好脚手架后,就很顺利了。数据、模板、组件、双向绑定,怎么都这么方便;完全改变了以前的开发思路,极大提高了生产力,也使得前端的分享更加方便。各种插件如雨后春笋般冒出来。我想要的视乎都能找到对应的插件,并能完美集成!
我在学习使用中,当然也遇到了各种各样的问题,在解决后总能给我带来兴奋,在分享出来,让更多人知道。
技术总结 - Docker
有人说docker带火了go语言,我想应该是对的,但是更火还是docker。
docker极大降低了运维的难度。
以前部署一个环境要几天,甚至一两周时间,会被各种复杂的环境折腾死。
后来有了docker,直接部署镜像就可以了。
docker可以单节点部署,比如直接启动镜像,或者使用docker-compose。
docker也可以部署集群,比如docker swarm。
docker命令并不多,学起来很快,正因为它学起来很快,才能这么快得到普及。
技术总结 - Jenkins
不管你的程序是用什么语言,什么框架编写的,最终都需要部署到服务器上面。
一个优秀的自动化部署工具,可以为你节约大量时间,降低大量出错的可能。Jenkins就是这么优秀的自动化部署工具。
Jenkins的pipeline脚本真是一个巨大的亮点,这使得分享更快,熟练之后,编写一个部署脚本也更快。
我总共写了7篇Jenkins博文,内容包括“安装、基本使用、pipeline使用、远程API接口”。这些博文为我后续其他项目的部署节约大量时间。
其他
还有很多运维的技术博文,主要是centos服务器的运维。我的日常工作并不是非要自己一个人什么都做,不过都懂一些,可以给自己的学习以及工作安排带来很多便利。
坚持分享,成就你我!
评论记录:
回复评论: