目录
1.输出一个整数的每一位
2.判定素数
3.求最大值方法的重载
4.输出闰年
5.打印 X 图形
6.数字9 出现的次数
7.计算分数的值
8. 模拟登陆
9.使用函数求最大值
10.斐波那契数列
星光不负赶路人,加油铁子们!!!
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 图形
题目: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; } }
( 注:图片来自网络,如有侵权,请联系删除 )
希望对大家有所帮助,感谢观看!!!
- 第3种方式:任何一个数字n,都可以写成 n = a*b的形式。那么必然会有一个数字是小于等于根号n的。
- 第2种方式,任何一个数字n,都可以写成 n = a*b的形式。那么必然会有一个数字是小于等于n/2的。
猜你喜欢
网友评论
- 搜索
- 最新文章
- 热门文章