《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 程序端 需手 ...
随机推荐
- ETCD:单机单节点
原文地址:Setting up local clusters 设置单节点集群 对于测试环境与开发环境,最快速与简单的方式是配置一个本地集群.对于生产环境,参考集群部分. 本地单节点集群 启动一个集群 ...
- Lua和C交互的简易教程
转载请标明出处:http://blog.csdn.net/shensky711/article/details/52458051 本文出自: [HansChen的博客] Lua栈 要理解Lua和C++ ...
- mysql数据库终端上的增删改查及权限等相关操作
ctrl + c 终止 [linux] service mysql start 启动mysql service mysql stop 停止mysql service mysql restart 重启m ...
- 设计模式之代理模式--PHP
代理模式是常用的设计模式之一,代理模式为对象的间接访问提供了一套方案,可以对对象访问进行控制,也能监控对象访问相关的数据信息. 代理模式(Proxy)就是给某一个对象提供代理,在由代理控制原对象的访问 ...
- Django中间件部分源码分析
中间件源码分析 中间件简介 中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django的输入和输出.每个中间件组件都负责做一些特定的 ...
- 09-kubernetes StatefulSet
目录 StatefulSet 简单测试 使用 StatefulSet 创建基础的PV StatefulSet 清单 StatefulSet 有状态应用副本集 无状态的, 更关注的是群体 有状态的, 更 ...
- PHP开发中session无法获取和保存问题解决方法
今天在程序设计中无法在session中获得内容,使用编辑器打开php.ini配置文件,在其中搜索"session.save_path", 把行中前面注释用的";" ...
- shell介绍、命令历史、命令补全和别名、通配符、输入输出重定向
第5周第5次课(4月20日) 课程内容: 8.1 shell介绍8.2 命令历史8.3 命令补全和别名8.4 通配符8.5 输入输出重定向 8.1 shell介绍 使用yum+管道方式查看zsh和ks ...
- MySQL主从扩展知识
6月29/7月2日任务 说明:这两天无新课,主要是扩充知识面注意:这两天的任务,需要回专贴.需要你们通过看这些东西总结成自己的心得. 不能照搬,必须要自己理解,能看多少就看多少,看不完也没有关系,但一 ...
- Swoole 是 PHP 中的 Node.js?
一想到那些可以使用 Node 的同事,一些 PHP 开发者的脸都嫉妒绿了.异步 Node 系统可以在不同协议间共享代码库,并在代码之外提供服务.这真的想让一个人转 Node 开发.实际上 PHP 中也 ...