《Java练习题》习题集四
编程合集: https://www.cnblogs.com/jssj/p/12002760.html
Java总结:https://www.cnblogs.com/jssj/p/11146205.html
【程序31】
题目:取一个整数a从右端开始的4~7位。
import java.util.Scanner; /**
* 【程序31】
* 题目:取一个整数a从右端开始的4~7位。
*/
public class Subject31 {
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in);
System.out.println("请输入一个操作8位的整数");
String num = scanner.next();
intercept(num);
} /**
* 截取num
* @param num
*/
private static void intercept(String num) {
char[] arr = num.toCharArray();
int j=0;
System.out.print("截取结果为:");
for(int i = arr.length-1 ; i >= 0;i--){
j++;
if(j >= 4 && j<=7){
System.out.print(arr[i]+" ");
}
}
}
}
运行结果:

【程序32】
题目:打印出杨辉三角形(要求打印出10行如下图) ,完美杨辉三角。
import java.util.ArrayList;
import java.util.List; /**
* 【程序32】
* 题目:打印出杨辉三角形(要求打印出10行如下图)
*/
public class Subject32 { private static int num_1 = 10;
private static List<int[]> list = new ArrayList<>(); public static void main(String[] args) {
System.out.println("杨辉三角形打印如下:");
yangHuiTriangle(num_1);
int maxLength = (list.get(list.size()-1)[num_1/2]+"").length();
boolean flag = isParity(maxLength);
for (int i = 0 ; i < list.size(); i++) {
int[] arr = list.get(i);
printSpace(arr,maxLength);
for (int j = 0; j < arr.length; j++) {
System.out.print(arr[j]);
int tmp = (arr[j]+"").length();
if(flag){
for (int k = 0; k < maxLength+2 - tmp; k++) {
System.out.print(" ");
}
}else{
for (int k = 0; k < maxLength+1 - tmp; k++) {
System.out.print(" ");
}
} }
System.out.println();
}
} /**
* 判断maxLength是奇数还是偶数
* @param maxLength
* @return
*/
private static boolean isParity(int maxLength) {
if(maxLength%2 == 1){
return false;
}else {
return true;
}
} /**
* 获取杨辉三角数据
* @param num
* @return
*/
private static int[] yangHuiTriangle(int num) {
if(num == 1){
int[] arr = new int[]{1};
list.add(arr);
return arr;
}else{
int[] arrPro = yangHuiTriangle(num-1);
int[] arrAft = new int[num];
for (int i = 0; i < arrAft.length ; i++) {
if(i == 0){
arrAft[i] = 0+arrPro[i];
}else if( i== arrAft.length-1){
arrAft[i] = arrPro[i-1]+0;
}else{
arrAft[i] = arrPro[i-1] + arrPro[i];
}
}
list.add(arrAft);
return arrAft;
}
} /**
* 空格打印
* @param arr
*/
private static void printSpace(int[] arr,int maxLength) {
for (int i = 0; i < num_1 - arr.length ; i++) {
double loopNum = Math.ceil((maxLength+1)/2.0);
for (int j = 0; j < loopNum; j++) {
System.out.print(" ");
}
}
}
}
运行结果:

【程序33】
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
/**
* 【程序33】
* 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
*/
public class Subject33 { public static void main(String[] args) {
int[] arr = new int[]{44,56,89,32,11,78,55,82,02,68,44,27};
printArray(arr);
deal(arr);
} private static void deal(int[] arr) {
int maxNum = arr[0]; //最大数
int minNum = arr[0]; //最小数
int maxPosition = 0; //最大数在数组的位置。
int minPosition = 0; //最小数在数组的位置。
for (int i = 1; i < arr.length; i++) {
if(arr[i] > maxNum){
maxNum = arr[i];
maxPosition = i;
}
if(arr[i] < minNum){
minNum = arr[i];
minPosition = i;
}
} /*********重组数组(最大的与第一个元素交换,最小的与最后一个元素)************/
int tmp = 0;
tmp = arr[0];
arr[0] = arr[maxPosition];
arr[maxPosition] = tmp; tmp = arr[arr.length-1];
arr[arr.length-1] = arr[minPosition];
arr[minPosition] = tmp; /*********打印数组***********/
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();
}
}
运行结果:

【程序34】
题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
/**
* 【程序34】
* 题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
*/
public class Subject34 { public static void main(String[] args) {
int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
/**********************打印数组*************************/
printArray(arr);
int m = 6; //偏移量
deviation(arr,m);
} /**
* 数组arr偏移m后的结果
* @param arr
* @param m
*/
private static void deviation(int[] arr,int m) {
int[] newArr = new int[m];
int count = m-1;
/*******************将最后m为数保存到新数组中********************/
for (int i = arr.length-1; i >= arr.length-m ; i--) {
newArr[count--] = arr[i];
} /********************将数组中的数据往后移动m位***************************/
for (int i = arr.length-1; i >= m; i--) {
arr[i] = arr[i-m];
} /**********************数组前面的数据补充完整*************************/
for (int i = 0; i < newArr.length; i++) {
arr[i] = newArr[i];
} /**********************打印数组*************************/
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();
}
}
运行结果:

【程序35】
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner; /**
* 【程序35】
* 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
*/
public class Subject35 {
public static void main(String[] args) {
System.out.println("请输入人数:");
Scanner scanner = new Scanner(System.in);
int n= scanner.nextInt();
numberGame(n);
} /**
* 数字游戏
* @param n
*/
private static void numberGame(int n) {
List<Integer> list = new ArrayList<>();
/****************给50个人编号******************/
for (int i = 1; i <= n; i++) {
list.add(i);
}
endGameByNum(list,1);
} /**
* 获取最后留下的人
* @param list
* @param ident
*/
private static void endGameByNum(List<Integer> list,int ident) {
List<Integer> listTmp = new ArrayList<>(); if(list.size() >= 3 ) {
for (int i = 0; i < list.size(); i++) {
if ((i+ident)%3 != 0) {
listTmp.add(list.get(i));
}
}
endGameByNum(listTmp,list.size()%3+1);
}else{
for (int i = 0; i < list.size(); i++) {
System.out.println("最后留下的人为"+list.get(i)+"号选手!");
}
}
}
}
运行结果:

【程序36】
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
import java.util.Scanner; /**
* 【程序36】
* 题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
*/
public class Subject36 { public static void main(String[] args) {
System.out.println("请输入一个字符串:");
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
stringLength(str);
} /**
* 输出字符串长度
* @param str
*/
private static void stringLength(String str) {
char[] arr = str.toCharArray();
System.out.println("字符串长度:"+ arr.length);
}
}
运行结果:


【程序37】
题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n
import java.util.Scanner; /**
* 【程序37】
* 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n
*/
public class Subject37 { private static double sum = 0; //求和 private static String str = ""; //拼接字符串 public static void main(String[] args) {
System.out.println("请输入一个正整数:");
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
specialDeal(num);
System.out.print(str.substring(0,str.length()-2)+"的和为:");
System.out.println(sum);
} /**
* 输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n
* @param num
*/
private static void specialDeal(int num) {
sum = sum+ 1.0/num;
if(num > 2){
specialDeal(num-2);
}
str = str+"1/"+num+" + ";
}
}
运行结果:

【程序38】
题目:字符串排序。
/**
* 【程序38】
* 题目:字符串排序。
*/
public class Subject38 {
public static void main(String[] args) {
String[] arrStr = new String[]{"asd","bbb","dddd","add","eddd","ccdd","caaa","adds","cvf","dass"};
System.out.print("初始数组:");
printStrinArray(arrStr);
stringOrder(arrStr);
} /**
* 字符串数组排序
* @param arrStr
*/
private static void stringOrder(String[] arrStr) {
for (int i = 0; i <arrStr.length ; i++) {
for (int j = i+1; j < arrStr.length; j++) {
String tmp = "";
if(arrStr[i].compareTo(arrStr[j]) > 0){
tmp = arrStr[i];
arrStr[i] = arrStr[j];
arrStr[j] = tmp;
}
}
}
System.out.print("排序后数组:");
printStrinArray(arrStr);
} /**
* 字符串数组打印
* @param arrStr
*/
private static void printStrinArray(String[] arrStr) {
for (int i = 0; i < arrStr.length; i++) {
System.out.print(arrStr[i]+" ");
}
System.out.println();
}
}
运行结果:

【程序39】
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
/**
* 【程序39】
* 题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。
* 第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,
* 问海滩上原来最少有多少个桃子?
*/
public class Subject39 { private static int count = 0; //分桃次数
private static int tmp = 0; //桃子数量 public static void main(String[] args) {
averagePeachTot();
} /**
* 循环获取桃子总数
*/
private static void averagePeachTot() {
int frequency = 4;
while(true){
if(count == 6){
System.out.println(tmp);
break;
}
count =0;
averagePeach(frequency);
frequency+=4;
}
} /**
* 平分桃子
*/
private static void averagePeach(int num) {
count++;
if(num%4 == 0 && count<=5){
tmp = num + 1 + num/4;
averagePeach( tmp);
}
}
}
运行结果:

【程序40】
题目:809*??=800*??+9*??+1
其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果
/**
* 【程序40】
* 题目:809*??=800*??+9*??+1 改成 809*??=800*??+9*??
* 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果, 题目错误
*/
public class Subject40 {
public static void main(String[] args) {
mathematicsFormula();
} /**
* 数学公式
*/
private static void mathematicsFormula() {
boolean flag = false;
for (int i = 10; i < 100 ; i++) {
if( 8*i < 100 && 9*i >100 && 809*i == 800*i+9*i){
flag = true;
System.out.println("??=" + i);
System.out.println("809*?? = " + 809*i);
}
}
if(!flag){
System.out.println("为找到合适的数");
}
}
}
运行结果:

参考:https://blog.csdn.net/zzzzzzzhu/article/details/82355001
《Java练习题》习题集四的更多相关文章
- 《Java练习题》Java编程题合集(全)
前言:不仅仅要实现,更要提升性能,精益求精,用尽量少的时间复杂度和空间复杂度解决问题. 初学者: <Java练习题>习题集一 https://www.cnblogs.com/jssj/ ...
- Java线程间通信方式剖析——Java进阶(四)
原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处 http://www.jasongj.com/java/thread_communication/ CountDownLatch C ...
- JAVA基础学习之throws和throw的区别、Java中的四种权限、多线程的使用等(2)
1.throws和throw的区别 throws使用在函数外,是编译时的异常,throw使用在函数内,是运行时的异常 使用方法 public int method(int[] arr) throws ...
- JAVA中的四种引用以及ReferenceQueue和WeakHashMap的使用示例
简介: 本文主要介绍JAVA中的四种引用: StrongReference(强引用).SoftReferenc(软引用).WeakReferenc(弱引用).PhantomReference(虚引用) ...
- 九天学会Java,第四天,循环结构
变量和数据类型,赋值和输出 算术运算 选择结构 循环结构 函数定义,函数调用 变量作用域 栈,程序运行的基石 面向对象 异常处理 语言提供的公用包 这次我们讲Java的循环结构.循环结构在编程中广泛使 ...
- java面向对象中四种权限(private,protected,public,友好型)详解
转自http://blog.csdn.net/a1237871112/article/details/50926975 及http://blog.csdn.net/blackmanren/articl ...
- Java多线程(四)java中的Sleep方法
点我跳过黑哥的卑鄙广告行为,进入正文. Java多线程系列更新中~ 正式篇: Java多线程(一) 什么是线程 Java多线程(二)关于多线程的CPU密集型和IO密集型这件事 Java多线程(三)如何 ...
- java内部类及四种内部类的实现方式
java内部类及四种内部类的实现方式 一.内部类定义:内部类分为: 成员内部类.静态嵌套类.方法内部类.匿名内部类. 二.为何要内部类?a.内部类提供了某种进入外围类的窗户.b.也是最吸引人的原因, ...
- Java 1.ExecutorService四种线程池的例子与说明
1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { @Override public void run() { ...
- Java中的四种引用
引用定义 实际上,Java中存在四种引用,它们由强到弱依次是:强引用.软引用.弱引用.虚引用.下面我们简单介绍下这四种引用: 强引用(Strong Reference):通常我们通过new来创建一个新 ...
随机推荐
- MYSQLnavicat绿色版工具下载
MYSql远程连接工具navicat工具:https://pan.baidu.com/s/1RU_8FCX7yCseAFRhn4voAQ
- Ubuntu中使用Nginx+rtmp模块搭建流媒体视频点播服务
1. 背景 不知不觉笔者来到流媒体部门已经一年半多了,积攒了不少的流媒体知识,但平时工作也比较忙,很少进行总结性的梳理,最近准备花几个周末时间写一个流媒体系列的实践文章,也算是给自己做总结的同时帮助有 ...
- linux网络配置(iproute2)
iproute2家族 ip命令:show / manipulate routing,devices,policy routing and tunnels(显示/操纵路由.设备.策略路由和隧道) 语法 ...
- 请求https前缀的网站验证SSL证书的解决方案之一
from requests.packages.urllib3.exceptions import InsecureRequestWarning # 禁用安全请求警告requests.packages. ...
- wincap linux部署
1.4.1 linux下安装Winpcap a) 下载Winpcap的源码:https://www.winpcap.org/devel.htm b) 上传源码包“WpcapSrc_4_1_3.zip” ...
- 附012.Kubeadm部署高可用Kubernetes
一 kubeadm介绍 1.1 概述 参考<附003.Kubeadm部署Kubernetes>. 1.2 kubeadm功能 参考<附003.Kubeadm部署Kubernetes& ...
- 运维常用 MySQL 命令
目录 设置用户密码 方法一 方法二 丢失root密码找回 添加用户 设置用户密码 方法一 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NewPass ...
- Java工作流引擎-中间件模式代码集成
关键词:工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流 bpm工作流系统 java工作流主流框架 自定义工作流引擎 表单设计器 流程设计器 前端代码集成步骤 ...
- STM32 GPIO口的配置和应用
STM32F103ZET6 一共有7组IO口(有FT的标识是可以识别5v的) 每组IO口有16个IO 一共16*7=112个IO 4种输入模式: (1) GPIO_Mode_AIN 模拟输入 (2) ...
- 【原创】003 | 搭上基于SpringBoot事务思想实战专车
前言 如果这是你第二次看到师长,说明你在觊觎我的美色! 点赞+关注再看,养成习惯 没别的意思,就是需要你的窥屏^_^ 专车介绍 该趟专车是开往基于Spring Boot事务思想实战的专车,在上一篇 搭 ...