《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来创建一个新 ...
随机推荐
- Linux配置SSH和Xshell连接服务器
>>>>>Ubuntu安装和配置ssh教程 SSH分为客户端 openssh-client 和服务器 openssh-server,可以利用以下命令确认电脑 上是否安装了 ...
- html基础——表格练习
最终样式 步骤分析: 标题和报名时间为一块 表格为一块 由图可知,可创建一个七行八列的列表存储数据 首先设置边框的样式,边框 大小,这里是黑色不好看可以设置为天空蓝 可选矿使用<input ty ...
- 使用Redis实现延时任务(一)
使用Redis实现延时任务(一) 前提 最近在生产环境刚好遇到了延时任务的场景,调研了一下目前主流的方案,分析了一下优劣并且敲定了最终的方案.这篇文章记录了调研的过程,以及初步方案的实现. 候选方案对 ...
- PHP开发各种规范,面试秘籍!
基本约定 源文件 代码使用<?php开头,忽略闭合标签?> 文件格式必须是无BOM UTF-8格式 一个文件只声明一种类型,如class和interface不能混写在一个源文件中 缩进 使 ...
- 【Android - 进阶】之Dialog分类及使用
1.确定取消对话框 代码: // 使用AlertDialog.Builder初始化对话框 AlertDialog.Builder builder0 = new AlertDialog.Builder( ...
- css优先级 中文版MDN补充翻译
原文地址:https://developer.mozilla.org/zh-CN/docs/Web/CSS/Specificity css的MDN中文版,这一页是讲css的优先级的. 读到文章的最后, ...
- nginx部署安装
首先需要下载Nginx软件包 nginx软件官方下载地址:[nginx官方下载连接](http://www.nginx.org) 建议选择稳定的软件版本,如果练习使用当然是无所谓,随便什么版本都可以, ...
- JQuery之选择集过滤
JQuery选择集过滤应用如下: 代码实现: <script src="JS/jquery-3.4.1.js"></script> <script&g ...
- Internet History,Technology,and Security - The Web Makes it Easy to Use(Week3)
时间如白驹过隙,又到了新的一周的慕课学习啦.这周内容较为简单,主要讲述互联网内部的发展状况. The Early World-Wide-Web Getting to the Web 谈到万维网,我们不 ...
- mysql数据库命令
删除一个表: drop table if exists 表名; 在表中插入行: Insert into 表名 values(, , ,) 创建表: Create table 表名( Id int(10 ...