《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,我决定转后端开发了!
今天给大家分享一些移动端(Android)开发学习后端开发(Java Web)的一些事儿,不知道从什么时候开始身边的同事都开始陆陆续续的在朋友圈发一些后端的文章如:Nginx.Docker.k8s类的 ...
- 【Linux系列】配置Centos 7的软件源(二)
目的 本文主要介绍以下内容: 设置centos的国内软件源,默认源都是国外的下载软件超级麻烦. ssh登录 下载一个shell或者cmder ssh root@192.168.10.18 #上篇设置的 ...
- C语言与汇编语言混合编程实验
混合编程方法: 模块链接法 汇编指令嵌入法 1: 模块链接法则 模块链接法是指分别用汇编语言和C语言实现独立的模块(或子程序),再用链接程序把各模块生成的obj文件连接成一个可执行程序. 1:C语言调 ...
- cenos7搭建gitlab
git.github和gitlab的区别 git:是一种版本控制系统,是一个命令,是一种工具 gitlib:是基于实现功能的开发库 github:是一个基于git实现的在线代码仓库软件 gitlib可 ...
- Python-Re正则表达式库
来源:中国MOOC北京理工大学Python教学团队 链接:https://www.icourse163.org/learn/BIT-1001870001#/learn/content?type=det ...
- VS Code实现markdown画流程图
安装最新的vscode编辑器,原生支持markdown语法.不会markdow的人可以去好好学下,写文档神器!!! 1.安装Markdown Preview Enhanced插件 2.本地新建test ...
- Machine Learning In Action 第二章学习笔记: kNN算法
本文主要记录<Machine Learning In Action>中第二章的内容.书中以两个具体实例来介绍kNN(k nearest neighbors),分别是: 约会对象预测 手写数 ...
- 向mysql数据表中插入数据失败的原因
1.案例代码: $sql1="insert into content(category,subject,content,username,release_date) values('{$ca ...
- Select下拉框onchange事件获取option的value值
首先方法中使用到了jqury,首先导入jqury的插件: 如果jqury的小插件没有的话,就去网上下载一个吧,jqury比原生的js使用起来方便了很多,这里也提供一个我的jqury的下载地址: jqu ...
- 如何在导航条的button点击变换时,切换对应的控制器
1.导航条内的button被点击 切换对应的控制器 让控制器作为调航条的代理 1.定义代理 2.遵循代理协议 3.实现代理 4.在合适的地方调用代理 当按钮被点击的时候切换控制器