《Java练习题》习题集二
编程合集: https://www.cnblogs.com/jssj/p/12002760.html
Java总结:https://www.cnblogs.com/jssj/p/11146205.html
【程序11】
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
/**
* 【程序11】
* 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
*/
public class Subject11 {
public static void main(String[] args) {
FormThreeNum();
} public static void FormThreeNum(){
for (int i = 1; i <= 4; i++) {
for (int j = 1; j <= 4; j++) {
for (int k = 1; k <= 4; k++) {
if(i != j && j!= k && k != i){
System.out.println("1,2,3,4可以组成的三位数:"+i+j+k);
}
}
}
}
}
}
运行结果:

。。。。。。。
【程序12】
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
/**
* 【程序12】
* 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,
* 低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;
* 40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,
* 高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
*/
public class Subject12 { public static void main(String[] args) {
System.out.println("请输入您的业绩:");
Scanner scanner = new Scanner(System.in);
double profit= scanner.nextInt();
System.out.println("您得到的提成为:"+premium(profit));
} public static double premium(double profit){
double premium = 0;
if(profit <= 100000){
premium = profit*0.1;
}else if(profit > 100000 && profit <= 200000){
premium = (profit - 100000) * 0.075 + premium(100000);
}else if(profit > 200000 && profit <= 400000){
premium = (profit - 200000) * 0.05 + premium(200000);
}else if(profit > 400000 && profit <= 600000){
premium = (profit - 400000) * 0.03 + premium(400000);
}else if(profit > 600000 && profit <= 1000000){
premium = (profit - 600000) * 0.015 + premium(600000);
}else{
premium = (profit - 1000000) * 0.01 + premium(1000000);
}
return premium;
}
}
运行结果:

【程序13】
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
/**
* 【程序13】
* 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
*/
public class Subject13 { public static void main(String[] args) {
squareNum();
}
public static void squareNum(){
int i = 1;
while(true){
int tmp = i*i;
int z = 1;
while(true){
if(z*z - tmp >=168){
break;
}
z++;
}
if(z*z - i*i == 168 && (z*z - 168-100)>=0){
System.out.println("一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,则该数为:"+(z*z - 168-100));
break;
}else{
i++;
}
}
}
}
运行结果:

【程序14】
题目:输入某年某月某日,判断这一天是这一年的第几天?
/**
* 【程序14】
* 题目:输入某年某月某日,判断这一天是这一年的第几天?
*/
public class Subject14 {
public static void main(String[] args) {
dayNum("2018-03-08");
dayNum("1900-03-08");
dayNum("2000-03-08");
dayNum("2020-03-08");
dayNum("2018-02-08");
dayNum("1900-02-08");
dayNum("2000-02-08");
dayNum("2020-02-08"); } public static void dayNum(String date){
String[] dateStr = date.split("-");
int dayNum = 0;
if(leapYear(dateStr[0])){
dayNum = month(dateStr[1] ,"1") + Integer.parseInt(dateStr[2]);
}else{
dayNum = month(dateStr[1] ,"0") + Integer.parseInt(dateStr[2]);
}
System.out.println("输入日期为该("+dateStr[0]+")年的第"+dayNum+"天");
} /**
* 根据年份判断闰年还是普通年
* @param year
* @return
*/
public static boolean leapYear(String year){
int years = Integer.parseInt(year);
if((years%4 ==0 && years%100!=0) || years%400 == 0){
return true;
}
return false;
} /**
* 根据月份获取天数
* @param month
* @param flag
* @return
*/
public static int month(String month,String flag){
int dayNum = 0;
switch (month){
case "01": dayNum = 0; break;
case "02": dayNum = month("01", flag) +31; break;
case "03":
if("0".equals(flag)) {
dayNum = month("02", flag) + 28;
}else {
dayNum = month("02", flag) + 29;
}
break;
case "04": dayNum = month("03", flag) + 31; break;
case "05": dayNum = month("04", flag) + 30; break;
case "06": dayNum = month("05", flag) + 31; break;
case "07": dayNum = month("06", flag) + 30; break;
case "08": dayNum = month("07", flag) + 31; break;
case "09": dayNum = month("08", flag) + 31; break;
case "10": dayNum = month("09", flag) + 30; break;
case "11": dayNum = month("10", flag) + 31; break;
case "12": dayNum = month("11", flag) + 30; break;
}
return dayNum;
}
}
运行结果:

【程序15】
题目:输入三个整数x,y,z,请把这三个数由小到大输出
/**
* 【程序15】
* 题目:输入三个整数x,y,z,请把这三个数由小到大输出
*/
public class Subject15 {
public static void main(String[] args) {
minNum(7,3,5);
} /**
* 获取最小数
* @param a
* @param b
* @param c
*/
public static void minNum(int a,int b,int c){
int tmp = 0;
int[] nums= {a,b,c};
int[] numTmp = new int[3];
for(int i=0 ; i<2;i++){
for (int j = i+1; j <= 2; j++) {
if(nums[j] < nums[i]){
tmp = nums[j];
nums[j] = nums[i];
nums[i] = tmp;
}
}
}
for (int i = 0; i < nums.length ; i++) {
System.out.println(nums[i]);
}
}
}
运行结果:

【程序16】
题目:输出9*9口诀。
/**
* 【程序16】
* 题目:输出9*9口诀。
*/
public class Subject16 { public static void main(String[] args) { for (int i = 1; i <= 9 ; i++) {
for (int j = 1; j <= i ; j++) {
System.out.print(i+"*"+j+"="+i*j+" ");
}
System.out.println("");
}
}
}
运行结果:

【程序17】
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
/**
* 【程序17】
* 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,
* 又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
*/
public class Subject17 {
public static void main(String[] args) {
System.out.println(peachNum(10));
} public static int peachNum(int days){
if(days == 1){
return 1;
}else if(days > 1){
return (peachNum(days-1) + 1) * 2;
}
return 0;
}
}
运行结果:

【程序18】
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
除了题目本身还扩展实现了,总共可以出现多少种组合
/**
* 【程序18】
* 题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。
* a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
*
* 除了题目本身还扩展实现了,总共可以出现多少种组合
*/
public class Subject18 {
public static void main(String[] args) { List<Map> list = new ArrayList<>();
Map<Character, Character> map = new HashMap<>();
List<Character> a = new ArrayList<>();
a.add('a');
a.add('b');
a.add('c');
List<Character> b = new ArrayList<>();
b.add('x');
b.add('y');
b.add('z'); group(a,b,map,list); for(Map<Character, Character> maptmp:list){
boolean flag = true;
for (Map.Entry<Character, Character> entry : maptmp.entrySet()) {
/***将不满足条件的情况去除掉*****/
if(((entry.getKey() =='a' && 'x' == entry.getValue()) || ((entry.getKey() =='c' && 'x' == entry.getValue()) || (entry.getKey() =='c' && 'z' == entry.getValue())))){
flag = false;
break;
}
}
if(flag){
System.out.println("对决名单为:");
for (Map.Entry<Character, Character> entry : maptmp.entrySet()) {
System.out.println("选手:"+entry.getKey() + " ----------VS------------ " + "选手:"+ entry.getValue());
}
}
} } /**
* 将全部分组情况展示出来
* @param a
* @param b
* @param map
* @param list
*/
public static void group(List<Character> a,List<Character> b,Map<Character, Character> map,List<Map> list){
for (int i = 0; i < a.size(); i++) {
if (i == 1) {
break;
}
for (int j = 0; j < a.size(); j++) {
map.put(a.get(i), b.get(j));
//System.out.println(a.get(i) + "----" + b.get(j));
if(a.size() == 1){
Map<Character, Character> mapTrue = new HashMap<>();
mapCopy(map,mapTrue);
list.add(mapTrue);
//System.out.println(mapTrue);
}
List<Character> tmp1 = new ArrayList<>();
List<Character> tmp2 = new ArrayList<>();
listCopy(a,tmp1);
listCopy(b,tmp2); tmp1.remove(a.get(i));
tmp2.remove(b.get(j));
group(tmp1,tmp2,map,list);
}
}
} /**
* 将paramsMap内容复制到resultMap中
* @param paramsMap
* @param resultMap
*/
public static void mapCopy(Map paramsMap, Map resultMap) {
if (resultMap == null) resultMap = new HashMap();
if (paramsMap == null) return; Iterator it = paramsMap.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
Object key = entry.getKey();
resultMap.put(key, paramsMap.get(key) != null ? paramsMap.get(key) : "");
}
} /**
* 将paramsList内容复制到resultList中
* @param paramsList
* @param resultList
*/
public static void listCopy(List paramsList,List resultList){
for (int k = 0; k < paramsList.size(); k++) {
resultList.add(paramsList.get(k));
}
}
}
运行结果:

【程序19】
题目:打印出如下图案(菱形)
/**
* 【程序19】
* 题目:打印出如下图案(菱形)
*/
public class Subject19 {
public static void main(String[] args) {
diamond(6);
} /**
* 打印菱形
*/
public static void diamond(int a){
for (int i = a; i > 0; i--) {
for (int j = 0; j < i; j++) {
System.out.print(" ");
}
for (int j = 0; j < a-i; j++) {
System.out.print("* ");
}
System.out.println("");
} for (int i = 0; i < a ; i++) {
for (int j = 0; j < i; j++) {
System.out.print(" ");
}
for (int j = 0; j < a-i; j++) {
System.out.print("* ");
}
System.out.println("");
}
}
}
运行结果:

【程序20】
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
/**
* 【程序20】
* 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
*/
public class Subject20 { public static void main(String[] args) {
double sumNum = sum(20);
System.out.println("前20规律数之和为:"+sumNum);
} /**
* 前num的数的和
* @param num
*/
public static double sum(int num){
if(num == 1){
return 2.0/1.0;
}else{
double a = getMolecule(num);
double b = getMolecule(num-1);
return sum(num-1)+ a/b;
}
} /**
* 按照规律获取分子
* @param num
* @return
*/
public static double getMolecule(int num){
if(num == 1){
return 2.0;
}else if(num == 2){
return 3.0;
}else{
return getMolecule(num-1) + getMolecule(num-2);
}
}
}
运行结果:

参考:https://blog.csdn.net/zzzzzzzhu/article/details/82355001
《Java练习题》习题集二的更多相关文章
- 《Java练习题》Java编程题合集(全)
前言:不仅仅要实现,更要提升性能,精益求精,用尽量少的时间复杂度和空间复杂度解决问题. 初学者: <Java练习题>习题集一 https://www.cnblogs.com/jssj/ ...
- Java基础教程——二维数组
二维数组 Java里的二维数组其实是数组的数组,即每个数组元素都是一个数组. 每个数组的长度不要求一致,但最好一致. // 同样有两种风格的定义方法 int[][] _arr21_推荐 = { { 1 ...
- 实战Java虚拟机之二“虚拟机的工作模式”
今天开始实战Java虚拟机之二:“虚拟机的工作模式”. 总计有5个系列 实战Java虚拟机之一“堆溢出处理” 实战Java虚拟机之二“虚拟机的工作模式” 实战Java虚拟机之三“G1的新生代GC” 实 ...
- Java设计模式(二) 工厂方法模式
本文介绍了工厂方法模式的概念,优缺点,实现方式,UML类图,并介绍了工厂方法(未)遵循的OOP原则 原创文章.同步自作者个人博客 http://www.jasongj.com/design_patte ...
- Java 验证码、二维码
Java 验证码.二维码 资源 需要: jelly-core-1.7.0.GA.jar网站: http://lychie.github.io/products.html将下载下来的 jelly ...
- Java入门(二)——果然断更的都是要受惩罚的。。。
断更了一个多月,阅读量立马从100+跌落至10-,虽说不是很看重这个,毕竟只是当这个是自己的学习笔记,但有人看,有人评论,有人认同和批评的感觉还是很巴适的,尤其以前有过却又被剥夺的,惨兮兮的. 好好写 ...
- Java实验报告二:Java面向对象程序设计
Java实验报告二:Java面向对象程序设计 ...
- Java中的二维数组
Java 中的二维数组 所谓二维数组,可以简单的理解为是一种"特殊"的一维数组,它的每个数组空间中保存的是一个一维数组. 那么如何使用二维数组呢,步骤如下: 1. 声明数组并分配空 ...
- Java并发编程二三事
Java并发编程二三事 转自我的Github 近日重新翻了一下<Java Concurrency in Practice>故以此文记之. 我觉得Java的并发可以从下面三个点去理解: * ...
- java学习之二维数组
java当中的二维数组,存储一组比较特殊的对象.他存储一个数组,同时存储的数组当中又存储着元素. java二维数组的声明方式一: class Arr2Demo { public static void ...
随机推荐
- 软件测试从业者必备的高频Linux命令
命令 cd 1.如何进入上级目录 cd .. 2.如何进入当前用户主目录 cd ~ 3.如何进入上两级目录 cd ../.. 4.进入当前目录命令 cd . 5.如何进入目录 /usr/isTeste ...
- 20191031-6 beta week 1/2 Scrum立会报告+燃尽图 04
此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/9914 一.小组情况 队名:扛把子 组长:孙晓宇 组员:宋晓丽 梁梦瑶 韩昊 ...
- 性能测试——记XX银行电票系统上线后宕机问题诊断优化
四月份我们公司负责的电票系统上线了,这个系统上线比客户方其他系统上线还特殊,是二期改造项目,旧系统数据还要整合抽取到新系统中继续使用,而且该系统不是增量型方式开发上线的,而且全部开发完后全国上线的,这 ...
- 二进制安装 k8s 1.15.6 集群
目录: 第一篇 环境介绍与基础配置 第二篇 部署前期准备工作 第三篇 ETCD 集群部署 第四篇 master节点的部署介绍和前置工作 第五篇 kube-nginx 和 keepalived 部署安装 ...
- HTML标签的for属性
HTML 标签的 for 属性 for 属性规定 label 与哪个表单元素绑定. 隐式和显式的联系 label通常以下面两种方式中的一种来和表单控件相联系: 将表单控件作为标记标签的内容,这样的就是 ...
- 管道符和作业控制、shell变量、环境变量配置文件 使用介绍
第6周第1次课(4月23日) 课程内容: 8.6 管道符和作业控制 8.7/8.8 shell变量8.9 环境变量配置文件扩展bashrc和bash_profile的区别 http://ask.ape ...
- c 程序之 最大公约数 和 最小公倍数
1.最大公约数 30 10 -> 10 #include<stdio.h> /* 求最大公约数 辗转相减法 36 --16 4 */ int main(){ int a, ...
- DNS服务反向解析实验
DNS域名解析服务是用于解析域名与ip地址对应关系的服务,功能上可以实现正向解析和反向解析 正向解析:根据主机名(域名)查找对应的IP地址. 反向解析:根据IP地址查找对应的主机名(域名). 下面我来 ...
- 洛谷 题解 P4613 【[COCI2017-2018#5] Olivander】
我又双叒叕被包菜辣! P4613 [COCI2017-2018#5] Olivander 首先,不知道为什么这题无法提交翻译: 所以,我先放个翻译: 哈利波特在与伏地魔的战斗中损坏了他的魔杖.他决定在 ...
- kafka - java.nio.file.FileSystemException
在启动Kafka时报错无法启动 E:\kafka_2.12-2.3.1\kafka-logs\__consumer_offsets-48\00000000000000000000.timeindex. ...