《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来创建一个新 ...
随机推荐
- Missing radix parameter 错误的解决办法
下载了Mint-Ui的example,使用npm run dev时发现如下报错: ERROR in ./packages/loadmore/src/loadmore.vue ✘ http://esli ...
- BloomFilter在Hudi中的应用
Bloom Filter在Hudi中的应用 介绍 Bloom Filter可以用于检索一个元素是否在一个集合中.它的优点是空间效率和查询时间都远远超过一般的算法,主要缺点是存在一定的误判率:当其判断元 ...
- "PSP助手”微信小程序宣传视频链接及内容介绍
此作业的要求参见[https://edu.cnblogs.com/campus/nenu/2019fall/homework/8677] 队名:扛把子组 组长:迟俊文 组员:刘信鹏 韩昊 宋晓丽 梁梦 ...
- SQLServer2008R2(百度网盘)下载与安装教程
很久没有安装过这个了,今天安装有点生疏了,这里记录一下分享 分为三块块1.下载地址,2.安装图解 ,3.安装失败问题 1.sqlserver 2008 r2 百度下载地址链接:下载 cn_sql_s ...
- 2019-10-16:maccms10后门复现利用,解析
该文章仅供学习,利用方法来自网络文章,仅供参考 Maccms10基于php+mysql的maccms,是苹果的内容管理,方便使用,功能良好,适用范围广 后门网站下载网址,是假官网:http://www ...
- JAVA网络通信底层调用LINUX探究
前言:该博客花了我一个下午得心血,全部手打,路过给个赞,拒绝抄袭!!!!!!!!!!!!!!!!!!!!!!!!! 简单的SOCKET通信程序 先从一段简单的JAVA程序性开始写起,这里我们才用半双工 ...
- Java 类、接口的API
本章节收集的类/接口API有: Object类,枚举,包装类,接口Comparable,类Arrays,Thread类,System类,Math,BigInteger,Random,日期时间,异常 O ...
- Java方法的可变参数
class Demo { public static int sum(int ... data) { //此处可以传递一个数组,也可以是多个参数 int sum = 0; for (int i : d ...
- elastic search(es)安装
全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选. 它可以快速地储存.搜索和分析海量数据.维基百科.Stack Overflow.Gi ...
- 在阿里云购买SSL证书,让网站支持HTTPS
SSL简介 引自:https://baike.baidu.com/item/ssl/320778?fr=aladdin SSL SSL(Secure Sockets Layer 安全套接层),及其继任 ...