2018.3.25
Java基础50题系列源码已上传到我的github仓库,有需要的可以自取,欢迎大家提出建议
https://github.com/Lawliet0717/Java-foudamental-50-problems

第21题

题目:求1+2!+3!+…+20!的和
思路:先写一个函数递归求阶乘,再循环求和

package Java基础50题;/**  Lawliet.2018.3.23*/
/** 求1+2!+3!+...+20!的和*/
public class example_21 {public static long fac(int n){if(n == 1 ){return 1;}return n * fac(n - 1);}public static void main(String[] args){long res = 0;for(int i = 1; i <=20; i++){res += fac(i);}System.out.println(res);}}

第22题

题目:利用递归方法求5!
思路:上面已经写过递归求阶乘了

第23题

题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。 问第4个人岁数,他说比第3个人大2岁。 问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
思路:还是递归,不要想着去倒推,这题就是练递归的

package Java基础50题;/**  Lawliet.2018.3.23*/
/** 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。* 问第4个人岁数,他说比第3个人大2岁。* 问第三个人,又说比第2人大两岁。* 问第2个人,说比第一个人大两岁。* 最后问第一个人,他说是10岁。请问第五个人多大? */
public class example_23 {public static int fun(int n){if(n == 1){return 10;}return 2 + fun(n - 1);}public static void main(String[] args){int n = 5;int res = fun(n);System.out.println(res);}}

第24题

题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
思路:把输入的正整数转为String类型进行操作。用.length()返回长度,用.substring() 逆序打印,注意一下.substring() 是左闭右开的。

package Java基础50题;
import java.util.*;/**  Lawliet.2018.3.23*/
/** 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。*/
public class example_24 {public static void main(String[] args){Scanner in = new Scanner(System.in);System.out.println("请输入一个正整数:");String str = in.nextLine();System.out.println("这个数是" + str.length() + "位数");System.out.println("这个数的逆序是:");for(int i = str.length() - 1; i >= 0; i--){System.out.print(str.substring(i, i+1));//substring是左闭右开的}}
}

第25题

题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
思路:还是转成String。找出mid,从前往后,从后往前比对是否相等。如果是字母的话仍然使用。

package Java基础50题;
import java.util.*;/**  Lawliet.2018.3.23*/
/** 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 */
public class example_25 {public static void main(String args[]){Scanner in = new Scanner(System.in);System.out.println("请输入一个n位数:");String str = in.nextLine();char[] arr = str.toCharArray();boolean flag = true;int length = arr.length;int mid =  (int) arr.length / 2 ;System.out.println(mid);for(int i = 0; i < mid; i++){if(arr[i] != arr[length - 1 - i]){flag = false;}}if(flag == true){System.out.println("是回文");}else{System.out.println("不是回文");}}}

第26题

题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
思路:switch写一个判断,首字母一样的再判断第二个

package Java基础50题;
import java.util.*;/**  Lawliet.2018.3.23*/
/** 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。* */
public class example_26 {public static void main(String[] args){Scanner in = new Scanner(System.in);String str = in.nextLine();char[] ch = str.toCharArray();switch(ch[0]){case 'M':{System.out.println("星期一");break;}case 'T':{if(ch[1] == 'u'){System.out.println("星期二");}else{System.out.println("星期四");}break;}case 'W':{System.out.println("星期三");break;}case 'F':{System.out.println("星期五");break;}case 'S':{if(ch[1] == 'a'){System.out.println("星期六");}else{System.out.println("星期日");}break;}}}
}

第27题

题目:求100之内的素数
思路:前面做过了,直接把函数拿来用

package Java基础50题;/**  Lawliet.2018.3.24*/
/** 求100之内的素数*/
public class example_27 {public static void main(String args[]){int factor = 0;int num = 0;for(int i = 1; i <= 100; i++){for(int j = 1; j <= i; j++){if(i % j == 0){factor++;}}if(factor == 2){num++;System.out.print(i + " ");}factor = 0;}System.out.println();System.out.println("100以内一共有 " + num + "个素数" );}}

第28题

题目:对10个数进行排序
思路:写了个简单的冒泡排序,时间复杂度是O(n²)

package Java基础50题;
import java.util.Arrays;
import java.util.*;/**  Lawliet.2018.3.24*/
/** 对10个数进行排序*/
public class example_28 {public static void bubbleSort(int arr[]){if(arr == null ||arr.length<2){return;}for(int e = arr.length-1; e > 0; e--){for(int i = 0; i < e; i++){if(arr[i] > arr[i+1] )swap(arr, i, i+1);}}}public static void swap(int arr[], int i, int j){int tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;}public static void printArray(int[] arr) {if (arr == null) {return;}for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}System.out.println();}public static void main(String[] args){Scanner in = new Scanner(System.in);System.out.println("请输入数组长度:");while(in.hasNext()){int len = in.nextInt();int[] arr = new int[len];System.out.println("请输入数组:");for(int i = 0; i < len; i++){arr[i] = in.nextInt();}bubbleSort(arr);printArray(arr);}}
}

第29题

题目:求一个3*3矩阵对角线元素之和
思路:没什么难的,熟悉一下怎么输入二维数组

package Java基础50题;
import java.util.*;/**  Lawliet.2018.3.24*/
/** 求一个3*3矩阵对角线元素之和 */
public class example_29 {public static void main(String[] args){Scanner in = new Scanner(System.in);System.out.println("请输入数组的行数和列数:");int m = in.nextInt();int n = in.nextInt();int[][] arr = new int[m][n];System.out.println("请输入数组");for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){arr[i][j] = in.nextInt();}}int sum = 0;for(int i = 0; i < m; i++){sum += arr[i][i];}System.out.println("对角线之和为:" + sum);}}

第30题

题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
思路:用Arraylist来实现,熟悉一下Arraylist的各种方法,最后用Collections.sort实现排序

package Java基础50题;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;/**  Lawliet.2018.3.24*/
/** 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 */
public class example_30 {public static void main(String[] args){int[] martx ={1,2,5,8,10};ArrayList list = new ArrayList();for(int i = 0; i < martx.length; i++){list.add(martx[i]);}System.out.print("当前数组为:");for(int i = 0; i < list.size(); i++){System.out.print(list.get(i) + " ");}System.out.println();System.out.print("请输入添加的数:");Scanner in = new Scanner(System.in);int element = in.nextInt();list.add(element);Collections.sort(list);System.out.print("排序之后数组为:");for(int i = 0; i < list.size(); i++){System.out.print(list.get(i) + " ");}}
}

Java基础50题(3) 21~30题相关推荐

  1. Java基础50题(1) 1~10题

    不说什么了,从最基础的开始吧.不论多简单的题目,自己不动手敲一遍是不可能深刻理解的.嘴上说说谁都会. 2018.3.25 Java基础50题系列源码已上传到我的github仓库,有需要的可以自取,欢迎 ...

  2. 计算机四级网络工程师——操作系统部分题目笔记汇总【21~30题】

    计算机四级笔记 操作系统部分:(21~30题) 因篇幅过长,为保证学习质量,遂将其分成四部分(四篇博客) 每10题为一篇,其他题目在我的计算机四级考试网络工程师专栏可以找到 第21题: 文件系统实现文 ...

  3. java基础50道编程题

    50道JAVA基础编程练习题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析 ...

  4. 3.java基础--- if、switch语句编程题

    java基础- 3if语句编程题 if判断语句 题目1(训练) 李雷想买一个价值7988元的新手机,她的旧手机在二手市场能卖1500元,而手机专卖店推出以旧换新的优惠,把她的旧手机交给店家,新手机就能 ...

  5. Java基础50道经典练习题

    一.基础问答15题 1.[基本概念问答] 请问Java语言是跨平台的吗?JVM是跨平台的吗?为什么? 答: Java语言是跨平台的,JVM是不跨平台的. Java能跨平台正是以JVM不跨平台为代价的. ...

  6. JAVA基础-50道编程题

    [程序01] 题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件"stud" ...

  7. LeetCode Week 3:第 21 ~ 30 题

    专栏--LeetCode 文章目录 专栏--LeetCode 21. 合并两个有序链表 22. 括号生成 23. 合并K个排序链表 24. 两两交换链表中的节点 25. K 个一组翻转链表 26. 删 ...

  8. Java岗面试题--Java基础(日积月累,每日三题)

    目录 面试题一:Java中有哪些容器(集合类)? 追问:Java中的容器,线程安全和线程不安全的分别有哪些? 面试题二: HashMap 的实现原理/底层数据结构? JDK1.7 和 JDK1.8 追 ...

  9. java基础案例教程试题,Java基础案例教程-中国大学mooc-试题题目及答案

    下列有关消火栓管道安装要求描述正确的是().A.管道穿梁及地下室剪力墙.水池等,应装设预埋套管B 雨淋报警阀启动装置中电动系统的组成不包括().A.火灾探测器B.电磁阀C.联动控制系统D.闭式喷头 胚 ...

最新文章

  1. 重写与重载的区别 以及 重写中super的使用
  2. js中当等于最小值是让代码不执行_网页中JS函数自动执行常用三种方法
  3. CXF配置,ant文件说明及运行,运行cxf中带的项目
  4. Qt工作笔记-QByteArray与自定义结构体之间的转化(可用于网络传输,以及数据回调)
  5. 解决数据库报唯一性约束错误的实践
  6. HDFS: The short-circuit local reads feature cannot be used
  7. devstack mysql_devstack 安装openstack newton版
  8. Appium移动自动化测试教程
  9. 一文读懂PCB品质体系认证
  10. 手写体识别识别(pytorch):
  11. Matlab实现图像识别(八)
  12. NLP的两种工具的java版使用:复旦FudanNLP,中科院计算所ICTCLAS2013
  13. Matlab故障树的最小割集的求解
  14. 在ensp中配置交换机interface GigabitEthernet 1/0/1报错
  15. 金融企业如何构建有效的数据分析体系?1000+案例经验汇总
  16. MFC (如何通过点击botton打开一个文件夹/文件)
  17. 2021年中国全自动棉纱缠绕机市场趋势报告、技术动态创新及2027年市场预测
  18. Windows内存清理篇——小结
  19. Python爬虫学习手册
  20. 超全总结 | 阿里电商故障治理和故障演练实践

热门文章

  1. 企业选择服务器托管好吗
  2. java面向对象程序设计题库_java面向对象程序设计习题集.doc
  3. 使用AntdPro创建基于React的管理后台(学习笔记5)(技术笔记3)下 部署服务器/页面托管后404解决方案集合
  4. 紧扣时髦潮水 OPPO U701珍珠红亮相
  5. 如何准备、制作和演讲presentation,以及应该注意的问题
  6. mysql的双机热备自动切换_Mysql双机热备配置(超详细多图版)
  7. 英语不好,能不能学会编程?
  8. 数字电子技术复习第二章
  9. 为什么单个元素的元组要加上逗号?
  10. 12、弱电工程综合布线各种设备材料图解,必学