当前位置:   article > 正文

【JavaSE】java刷题——基础语法熟练应用

【JavaSE】java刷题——基础语法熟练应用

前言

通过本篇题目,可以让初学Java的小伙伴们更加熟练Java的基础语法~

欢迎关注个人主页逸狼


创造不易,可以点点赞吗~

如有错误,欢迎指出~



题1:数字9 出现的次数

 题述:编写程序数一下 1到 100 的所有整数中出现多少个数字9

思路

分两步

  1. 取个位上的9  有9 19 29……99 有10个
  2. 取十位上的9  有90 91 92 93……99 有10个

代码实现

  1. public class test {
  2. //1~100数字9出现的个数
  3. public static int fan1(int n){
  4. int count=0;
  5. for (int i = 1; i <=100 ; i++) {
  6. if(i%10==9){//取个位上的99 19 29……9910
  7. count++;
  8. }
  9. if(i/10==9){//取十位上的990 91 92 93……9910
  10. count++;
  11. }
  12. }
  13. return count ;
  14. }
  15. public static void main(String[] args) {
  16. System.out.println(fan1(100));
  17. }

结果是20

题2:计算阶乘的和

题述:输入一个正整数,求它从1到该整数阶乘的和。如指定数字5,求1!+2!+……5!

思路

先实现一个数求阶乘的方法,再相加

代码实现

  1. //写一个函数求阶乘
  2. public static int fac(int n) {
  3. int ret = 1;
  4. for (int i = 1; i <= n; i++) {
  5. ret *= i;
  6. }
  7. return ret;
  8. }
  9. //此函数求阶乘的和
  10. public static int facSum(int n){
  11. int sum=0;
  12. for (int i = 1; i <=n ; i++) {
  13. sum+=fac(i);
  14. }
  15. return sum;//要记得要写返回值,漏了就会一直报错
  16. }
  17. public static void main(String[] args) {
  18. int n=facSum(5);
  19. System.out.println(n);
  20. }

结果是153

题3:求水仙花数

水仙花数也被称为超完全数字不变数自恋数自幂数、阿姆斯壮数或阿姆斯特朗数(,水仙花数是指一个 3 位数,它的每个数位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。

思路

  1. 统计当前数字有几位数
  2. 取到数字的每一位上的数字
  3. 判断是否符合要求

例如 153(1^3 + 5^3+ 3^3 = 153)

步骤是先统计153有3位数字,再取到153每一位数字,最后判断1^3 + 5^3+ 3^3 = 153是否成立

代码实现

  1. public static void main(String[] args) {
  2. //求水仙花数
  3. for (int i = 0; i <= 999999; i++) {//遍历1~999999的数字
  4. //计算当前有几位数
  5. int count=0;
  6. int tmp=i;
  7. while(tmp!=0){
  8. count++;
  9. tmp/=10;
  10. }
  11. //求tmp的每一位
  12. tmp=i;
  13. int sum=0;
  14. while(tmp!=0){
  15. sum+=Math.pow(tmp%10,count);//计算tmp的count次方
  16. tmp/=10;
  17. }
  18. if(sum==i){
  19. System.out.println(i);
  20. }
  21. }
  22. }

结果中153 、370、371、407是水仙花数 

题4:打印素数

打印1~100的素数

思路1

法一:写一个方法判断一个数字是否是素数,再遍历2~100,打印符合的数字

代码实现1

  1. //判断一个数字是否是素数
  2. public static boolean is_prime(int n){
  3. for (int i = 2; i <n ; i++) {
  4. if(n%i==0){
  5. return false;
  6. }
  7. }
  8. return true;
  9. }
  10. public static void main(String[] args) {
  11. //打印1~100的素数
  12. for (int i = 2; i <=100 ; i++) {
  13. if(is_prime(i)){
  14. System.out.print(i+" ");
  15. }
  16. }
  17. }

思路2

法二:num=a*b 其中a和b两个必有一个 <= 根号num

代码实现2

  1. public static void main(String[] args) {
  2. //打印1~100的素数
  3. int num=100;
  4. for (int k = 1; k <= num; k++) {
  5. int i = 2;
  6. //跳出for循环时有两个结果
  7. for ( ; i <=Math.sqrt(k) ; i++) {//1.i>根号num
  8. if(k%i==0){//2.num被整除了
  9. break;
  10. }
  11. }
  12. if(i>Math.sqrt(k)) {
  13. System.out.println(k+" ");
  14. }
  15. }

结果

题5:猜数字游戏的实现

  1. import java.util.Random;
  2. import java.util.Scanner;
  3. public static void main(String[] args) {
  4. //java实现猜数字游戏
  5. int count=5;
  6. Scanner scan=new Scanner(System.in);
  7. Random random=new Random();
  8. int randNum=random.nextInt(100);//[0,100)
  9. //System.out.println("随机数是:"+randNum);用于测试时使用
  10. while(true){
  11. System.out.println("你还有"+count+"次机会!");
  12. System.out.println("请输入要猜的数字:");
  13. int num=scan.nextInt();
  14. if(num>randNum){
  15. System.out.println("猜大了!");
  16. }
  17. else if(num<randNum){
  18. System.out.println("猜小了!");
  19. }
  20. else{
  21. System.out.println("恭喜你,猜对了!数字是:"+randNum);
  22. break;
  23. }
  24. count--;
  25. if(count==0){
  26. System.out.println("很遗憾,挑战失败!数字是:"+randNum);
  27. break;
  28. }
  29. }
  30. }

结果

题6:打印x形图案

思路

利用坐标关系i==j和i+j=n-1时打印*,其他情况打印空格

代码实现

  1. //打印x形图案
  2. public static void printX(int n){
  3. for (int i = 0; i < n; i++) {
  4. for (int j = 0; j < n; j++) {
  5. if(i==j||i+j==n-1){
  6. System.out.print("*");
  7. }
  8. else{
  9. System.out.print(" ");
  10. }
  11. }
  12. System.out.println();//换行
  13. }
  14. }
  15. public static void main(String[] args) {
  16. printX(5);
  17. }

结果

题7:计算分数

代码实现

  1. //计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
  2. public static void main(String[] args) {
  3. double ret=0;//注意这里要用double,不能用int
  4. int flag=1;
  5. for (int i = 1; i <=100;i++) {
  6. ret += 1.0 / (flag * i);
  7. flag=-flag;//用于改变i的符号
  8. }
  9. System.out.println(ret);
  10. }

结果 0.688172179310195

题8:模拟登陆

题述:编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序

代码实现

  1. public static void login(){
  2. int count=3;
  3. Scanner scan=new Scanner(System.in);
  4. String string="123456";
  5. while(count!=0){
  6. System.out.println("请输入密码:");
  7. String password= scan.nextLine();
  8. if(password.equals(string)){//匹配字符串用equals
  9. //登录成功
  10. System.out.println("登录成功!");
  11. break;
  12. }
  13. else{
  14. //登录失败
  15. count--;
  16. System.out.println("密码错误,你还有"+count+"次机会!");
  17. }
  18. }
  19. }
  20. public static void main(String[] args) {
  21. login();
  22. }

结果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/356748
推荐阅读
相关标签
  

闽ICP备14008679号