《Java练习题》习题集三
编程合集: https://www.cnblogs.com/jssj/p/12002760.html
Java总结:https://www.cnblogs.com/jssj/p/11146205.html
【程序21】
题目:求1+2!+3!+…+20!的和
【程序22】
题目:利用递归方法求5!。
/**
* 【程序21】
* 题目:求1+2!+3!+…+20!的和
* 【程序22】
* 题目:利用递归方法求5!。
*/
public class Subject21And22 { public static void main(String[] args) {
int sum = factorialSum(20);
System.out.println("1+2!+3!+…+20!之和:"+sum);
} /**
* 阶乘求和
* @param num
* @return
*/
private static int factorialSum(int num) {
int sum = 0;
for (int j = 1; j <= num; j++) {
sum = sum+factorial(j);
}
return sum;
} /**
* 计算num的阶乘!
* @param num
* @return
*/
public static int factorial(int num){
if(num == 1){
return 1;
}else{
return num*factorial(num-1);
}
}
}
运行结果:

【程序23】
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
/**
* 【程序23】
* 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
*/
public class Subject23 {
public static void main(String[] args) {
int ageNum = getAge(5);
System.out.println("第五个人的年龄:"+ageNum);
} /**
* 获取年龄
* @param p0
* @return
*/
private static int getAge(int p0) {
if(p0 == 1){
return 10;
}else{
return getAge(p0-1)+2;
}
}
}
运行结果:

【程序24】
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
/**
* 【程序24】
* 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
*/
public class Subject24 { public static void main(String[] args) {
System.out.println("请输入需要分析的正整数:");
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
analysisInt(num);
} /**
* 分析正整数
* @param num
*/
private static void analysisInt(int num) {
String tmpStr = String.valueOf(num);
char[] arrStr =tmpStr.toCharArray();
System.out.println("该正整数是"+arrStr.length+"位数。");
System.out.println("倒序打印为:");
for (int i = arrStr.length-1; i >= 0; i--) {
System.out.print(arrStr[i]+" ");
}
}
}
运行结果:


【程序25】
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
import java.util.ArrayList;
import java.util.List; /**
* 【程序25】
* 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
*/
public class Subject25 { private static List<Integer> list = new ArrayList<>(); public static void main(String[] args) {
int num = 12321;
palindromeNumber(num);
if(list.get(0) == list.get(4) && list.get(1) == list.get(3)){
System.out.println("数字("+num+")是回文数");
}else{
System.out.println("数字("+num+")不是回文数");
} /***第二种方式**/
char[] arr = (num+"").toCharArray();
if(arr[0]==arr[4] && arr[1]==arr[3]){
System.out.println("数字("+num+")是回文数");
}else{
System.out.println("数字("+num+")不是回文数");
}
} /**
* 判断num是否是回文数
* @param num
*/
private static void palindromeNumber(int num) {
int lenght = (num+"").length()-1;
int numTmp = 0;
if(num < 10){
numTmp =num;
}else{
numTmp = num/(int)Math.pow(10,lenght);
int tmp =num - numTmp*(int)Math.pow(10,lenght);
palindromeNumber(tmp);
}
list.add(numTmp);
}
}
运行结果:

【程序26】
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
import java.util.Scanner; /**
* 【程序26】
* 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
*/
public class Subject26 {
public static void main(String[] args) {
System.out.println("请输入你现在心里想的哪个星期几(只需要前两个字母即可):");
Scanner scanner = new Scanner(System.in);
String scannerStr= scanner.next();
//判断输入的星期几
weekDay(scannerStr);
} /**
* 判断输入的星期的星期几
* @param scannerStr
*/
private static void weekDay(String scannerStr) {
char[] scannerArr = scannerStr.toCharArray();
switch (scannerArr[0]){
case 'M': System.out.println("您输入的星期一"); break;
case 'T':
switch (scannerArr[1]){
case 'U': System.out.println("您输入的星期二"); break;
case 'H': System.out.println("您输入的星期四"); break;
default:
System.out.println("您输入的不是星期,请重新输入:");
Scanner scanner = new Scanner(System.in);
scannerStr= scanner.next();
//判断输入的星期几
weekDay(scannerStr);
} break; case 'W': System.out.println("您输入的星期三"); break;
case 'F': System.out.println("您输入的星期五"); break;
case 'S':
switch (scannerArr[1]){
case 'A': System.out.println("您输入的星期六"); break;
case 'U': System.out.println("您输入的星期天"); break;
default:
System.out.println("您输入的不是星期,请重新输入:");
Scanner scanner = new Scanner(System.in);
scannerStr= scanner.next();
//判断输入的星期几
weekDay(scannerStr);
}break;
default:
System.out.println("您输入的不是星期,请重新输入:");
Scanner scanner = new Scanner(System.in);
scannerStr= scanner.next();
//判断输入的星期几
weekDay(scannerStr);
}
}
}
运行结果:


【程序27】
题目:对10个数进行排序
import java.util.Scanner; /**
* 【程序27】
* 题目:对10个数进行排序
*/
public class Subject27 { public static void main(String[] args) {
System.out.println("请输入10个整数:");
Scanner scanner = new Scanner(System.in); int[] arr = new int[10];
for (int i = 0; i <10 ; i++) {
System.out.println("请输入第"+(i+1)+"个数:");
int num = scanner.nextInt();
arr[i] = num;
} sortInt(arr);
} /**
* 对数组arr进行排序
* @param arr
*/
private static void sortInt(int[] arr) {
int tmp = 0;
for(int i =0 ;i<arr.length;i++){
for (int j = i+1; j <arr.length ; j++) {
if(arr[i] > arr[j]){
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
} System.out.println("从小到大排序为:");
for (int i = 0; i <arr.length ; i++) {
System.out.print(arr[i]+" ");
}
}
}
运行结果:


【程序28】
题目:求一个3*3矩阵对角线元素之和
import java.util.Random; /**
* 【程序28】
* 题目:求一个3*3矩阵对角线元素之和
*/
public class Subject28 { public static void main(String[] args) {
Random random = new Random();
int[][] arr = new int[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
arr[i][j] = random.nextInt(10);
}
} seekDiagonalSum(arr);
} /**
* 计算矩阵对角线之后
* @param arr
*/
private static void seekDiagonalSum(int[][] arr) {
int slash = 0;
int backSlash = 0; for (int i = 0; i < arr.length; i++) {
slash = slash + arr[i][i];
} System.out.println("随机生成的3*3的矩阵为:");
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length ; j++) {
System.out.print(arr[i][j] + " ");
if(i+j == arr.length-1){
backSlash += arr[i][j];
}
}
System.out.println("");
}
System.out.println("正向对角线之和:"+slash);
System.out.println("反向对角线之和:"+backSlash);
}
}
运行结果:

【程序29】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
import java.util.Scanner; /**
* 【程序29】
* 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
*/
public class Subject29 {
public static void main(String[] args) {
int[] arr = new int[]{1,2,3,4,5,6,7,8,0};
System.out.println("请输入一个1到8之间的数:");
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt(); for (int i = 0; i < arr.length-2 ; i++) {
if(num >= arr[i] && num <= arr[i+1] ){
for (int j = arr.length-1; j > i+1 ; j--) {
arr[j] = arr[j-1];
}
arr[i+1] = num;
break;
}
}
System.out.print("插入数字("+num+")之后的数组为:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
}
运行结果:


【程序30】
题目:将一个数组逆序输出。
/**
* 【程序30】题目:将一个数组逆序输出。
*/
public class Subject30 {
public static void main(String[] args) {
int[] arr = new int[]{1,2,3,4,5,6,7,8,9};
System.out.println("顺序打印:");
printArray(arr);
reverseOrder(arr);
} /**
* 将arr数组逆序处理
* @param arr
*/
private static void reverseOrder(int[] arr) {
int tmp = 0;
for (int i = 0; i < arr.length/2 ; i++) {
tmp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = tmp;
} System.out.println("逆序打印:");
printArray(arr);
} /**
* 打印数组
* @param arr
*/
private static void printArray(int[] arr) {
for (int i = 0; i < arr.length ; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
}
运行结果:

参考:https://blog.csdn.net/zzzzzzzhu/article/details/82355001
《Java练习题》习题集三的更多相关文章
- 《Java练习题》Java编程题合集(全)
前言:不仅仅要实现,更要提升性能,精益求精,用尽量少的时间复杂度和空间复杂度解决问题. 初学者: <Java练习题>习题集一 https://www.cnblogs.com/jssj/ ...
- 对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈
对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈 一:教学中存在的学习问题 “1.由于同学们平时练习不足,上课总是出现跟不上老师的节奏的现象. 2.个别同学上课不认真听讲,打开 ...
- 201671010140. 2016-2017-2 《Java程序设计》java学习第三周
java学习第三周 不知不觉,学习java已经是第三周了,不同于初见时的无措,慌张,在接触一段时日后,渐渐熟悉了一些,了解到了它的便利之处,也体会到了它的一些难点,本周主攻第四章,< ...
- Hibernate 系列 07 - Hibernate中Java对象的三种状态
引导目录: Hibernate 系列教程 目录 1. Java对象的三种状态 当应用通过调用Hibernate API与框架发生交互时,需要从持久化的角度关注应用对象的生命周期. 持久化声明周期是Hi ...
- 0038 Java学习笔记-多线程-传统线程间通信、Condition、阻塞队列、《疯狂Java讲义 第三版》进程间通信示例代码存在的一个问题
调用同步锁的wait().notify().notifyAll()进行线程通信 看这个经典的存取款问题,要求两个线程存款,两个线程取款,账户里有余额的时候只能取款,没余额的时候只能存款,存取款金额相同 ...
- Hibernate中Java对象的三种状态
Hibernate中Java对象的三种 ...
- Java设计模式(三) 抽象工厂模式
原创文章,同步发自作者个人博客,转载请注明出处 http://www.jasongj.com/design_pattern/abstract_factory/ 抽象工厂模式解决的问题 上文<工厂 ...
- Java进阶(三)多线程开发关键技术
原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...
- Java多线程的三种实现方式
java多线程的三种实现方式 一.继承Thread类 二.实现Runnable接口 三.使用ExecutorService, Callable, Future 无论是通过继承Thread类还是实现Ru ...
- OID,主键生成策略,PO VO DTO,get和load区别,脏检查,快照,java对象的三种状态
主键生成策略 sequence 数据库端 native 数据库端 uuid 程序端 自动赋值 生成的是一个32位的16进制数 实体类需把ID改成String 类型 assigned 程序端 需手 ...
随机推荐
- Android DecorView 与 Activity 绑定原理分析
一年多以前,曾经以为自己对 View 的绘制已经有了解了,事后发现也只是懂了些皮毛而已.经过一年多的实战,Android 和 Java 基础都有了提升,时机成熟了,是时候该去总结 View 的绘制流程 ...
- 阅读《Windows 黑客编程技术详解》(甘迪文著)【正在进行】
内容提要: 本书介绍的是黑客编程的基础技术,涉及用户层下的Windows编程和内核层下的Rootkit编程. 全书大纲: 第一篇 用户篇 平常计算机上使用的应用程序,都运行在用户层上,属于用户程序.在 ...
- 记一次LDAP主从同步配置
LDAP主从同步 OpenLDAP在2.3版本之前的同步复制带有一系列缺点如只支持一主多从模式等,在此缺点就不多说,下文着重介绍一下OpenLDAP V2.4以后的同步负复制功能 同步功能 2.4版最 ...
- PHP与Python进行数据交互
最近,决定在一个项目用tp5进行APP接口开发,用Python做数据分析,然后这就面临一个问题:PHP和Python如何进行数据交互? 思路 我解决此问题的方法是利用了PHP的passthru函数来调 ...
- 【笔记】总结Springboot和Vue前后端分离的跨域问题
跨域一直是个很玄学的问题,SSM的时候又得前后端一起配置,sb的时候又不用. 前端 axios普通get请求 submitForm() { var v=this; this.$axios({ meth ...
- IDM下载工具使用
平时网上找资料,找视频,难免都需要下载到本地,奈何下载速度都一般,最近发现一款多线程下载工具,堪称无敌!!
- EasyCode实现数据库到Swagger全自动化
简介 EasyCode是基于IntelliJ IDEA开发的代码生成插件,通过自定义生成模板可以完成定制化的 Mapper Service Controller 生成,结合数据库 Comment还可以 ...
- Spring源码分析之AOP
1.AOP简介 AOP即面向切面编程(Aspect Oriented Programming),通过预编译方式及运行期动态代理实现程序功能的统一维护的一种技术.使用aop对业务逻辑的各个部分进行隔离, ...
- sortColors
Given an array with n objects colored red, white or blue, sort them in-place so that objects of the ...
- 01Shell入门02-echo和printf
输出方式 小知识 echo echo -e 可以控制字体颜色和背景颜色输出 示例 echo -e "\033[41;36m Hello world \033[0m" [root@h ...