Java基础练习
1.1 减肥计划if版本
1.1.1 案例需求
- 输入星期数,显示今天的减肥活动 周一:跑步 周二:游泳 周三:慢走 周四:动感单车 周五:拳击 周六:爬山 周日:好好吃一顿
package com.bdit.day06;
import java.util.Scanner;
public class Exercise02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入星期数:");
int str = sc.nextInt();
if( str == 1){
System.out.println("周一:跑步");
}else if( str == 2){
System.out.println("周二:游泳");
}else if( str == 3){
System.out.println("周三:慢走");
}else if( str == 4){
System.out.println("周四:动感单车");
}else if( str == 5){
System.out.println("周五:拳击");
}else if( str == 6){
System.out.println("周六:爬山");
}else if( str == 7){
System.out.println("周日:好好吃一顿");
} else {
System.out.println("星期错误");
}
}
}
1.2 减肥计划 switch 版本
1.2.1 案例需求
- 输入星期数,显示今天的减肥活动 周一:跑步 周二:游泳 周三:慢走 周四:动感单车 周五:拳击 周六:爬山 周日:好好吃一顿
package com.bdit.day06;
import java.util.Scanner;
public class Exercise01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入星期数:");
String str = sc.next();
switch (str){
case "星期一":
case"1":
System.out.println("周一:跑步");
break;
case "星期二":
case"2":
System.out.println("周二:游泳");
break;
case "星期三":
case"3":
System.out.println("周三:慢走");
break;
case "星期四":
case"4":
System.out.println("周四:动感单车");
break;
case "星期五":
case"5":
System.out.println(" 周五:拳击");
break;
case "星期六":
case"6":
System.out.println(" 周六:爬山");
break;
case "星期七":
case"7":
System.out.println("周日:好好吃一顿");
break;
default:
System.out.println("输入正确的星期数");
}
}
}
1.3逢七跳过
1.3.案例需求
- 朋友聚会的时候可能会玩一个游戏:逢七过。 规则是:从任意一个数字开始报数,当你要报的数字包含7或者是7 的倍数时都要说:过。 为了帮助大家更好的玩这个游戏,这里我们直接在控制台打印出1-100之间的满足逢七必过 规则的数据。 这样,大家将来在玩游戏的时候,就知道哪些数据要说:过。
package com.bdit.day06;
//当你要报的数字包含7或者是7 的倍数时都要说过 个位 7
//为了帮助大家更好的玩这个游戏,这里我们直接在控制台打印出1-100之间的满足逢七必过 规则的数据。
public class Exercise03 {
public static void main(String[] args) {
for (int i = 0; i <= 100; i++) {
if(i%7==0 || (i-7)%10==0){
System.out.print(i+" ");
}
}
System.out.println("----");
}
}
1.4不死神兔
1.4.1案例需求
- 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子, 假如兔子都 不死,问第二十个月的兔子对数为多少?
package com.bdit.day06;
//有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
// 假如兔子都 不死,问第二十个月的兔子对数为多少?
public class Exercise04 {
public static void main(String[] args) {
//不死神兔
//一、 1
//二、 1
//三、 2
//四、 3
//五、 5
//六、 8
//第三个月的对数是前两个月的和
int[] a= new int[20];
a[0] = 1;
a[1] = 1;
for (int i = 0; i < a.length; i++) {
a[i] = a[i-1]+a[i-2];
}
System.out.println(a[19]);
}
}
1.5百钱白鸡
1.5.1案例需求
- 我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱 买百鸡,问鸡翁、鸡母、鸡雏各几何?
package com.bdit.day06;
//我国古代数学家张丘建在《算经》一书中提出的数学问题:
//鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱 买百鸡,问鸡翁、鸡母、鸡雏各几何
public class Exercise05 {
public static void main(String[] args) {
int mony =100;
for (int jg = 0; jg <= mony/5; jg++) {//最大买的个数20
for (int jm = 0; jm <= 33 ; jm++) {//最大买的个数33.33333
int jc =100-(jg+jm);//百鸡
if(jc%3==0 && (jg*5+jm*3+jc/3==100)){//整只小鸡和个数*价格=总钱数
System.out.println("鸡翁:"+jg+"鸡母"+jm+"鸡雏"+jc);
}
}
}
}
}
1.6数组元素求和
1.6.1案例需求
- 有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。求出该数组中满足要求的元素和, 要求是:求和的元 素个位和十位都不能是7,并且只能是偶数
package com.bdit.day06;
//有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。
//求出该数组中满足要求的元素和, 要求是:求和的元 素个位和十位都不能是7,并且只能是偶数
public class Exercise06 {
public static void main(String[] args) {
int[] arr = {68,27,95,88,171,996,51,210};
int all =0;
for (int i = 0; i < arr.length; i++) {
if ((arr[i]%2==0) && (arr[i]-7!=0) && (arr[i]/10%10!=7)){
all+=arr[i];
System.out.println(arr[i]);
}
}
System.out.println("求和的元素个位和十位都不能是7,并且只能是偶数,合为"+all);
}
}
1.7判断两个数组是否相同
1.7.1案例需求
- 定义一个方法,用于比较两个数组的内容是否相同
package com.bdit.day06;//定义一个方法,用于比较两个数组的内容是否相同
public class Exercise07 {
public static void main(String[] args) {
int[] a = {1,5,3,9,100};
int[] b = {1,5,3,9,10};
System.out.println(xiang(a,b));
}
public static boolean xiang(int aa[],int bb[]){
if(aa.length != bb.length){
return false;
}
for (int i = 0; i < aa.length; i++) {
if(aa[i] != bb[i]) {
return false;
}
}
return false;
}
}
1.8 查找元素在数组中出现的索引位置
1.8.1案例需求
- 已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据,查找该数据在数组中的索引。 并在控制台输出找到的索引值。如果没有查找到,则输出-1
package com.bdit.day06;
//已知一个数组 arr = {19, 28, 37, 46, 50};键盘录入一个数据,
//查找该数据在数组中的索引。 并在控制台输出找到的索引值。如果没有查找到,则输出-1
import java.util.Scanner;
public class Exercise08 {
public static void main(String[] args) {
int[] arr={19, 28, 37, 46, 50};
System.out.println(sy(arr));
}
public static int sy(int[] arr){
Scanner sc =new Scanner(System.in);
System.out.println("请输入一个数:");
int in =sc.nextInt();
int xb =-1;
for (int i = 0; i < arr.length; i++) {
if(in == arr[i]){
xb = i;
System.out.println("--"+xb);
break;
}
}
return xb;
}
}
1.9数组元素反转
1.9.1案例需求
- 已知一个数组 arr = {19, 28, 37, 46, 50}; 用程序实现把数组中的元素值交换, 交换后的数组 arr = {50, 46, 37, 28,19}; 并在控制台输出交换后的数组元素。
package com.bdit.day06;
//已知一个数组 arr = {19, 28, 37, 46, 50}; 用程序实现把数组中的元素值交换,
//交换后的数组 arr = {50, 46, 37, 28,19}; 并在控制台输出交换后的数组元素。
public class Exercise09{
public static void main(String[] args) {
int[]arr={19, 28, 37, 46, 50};
int max= arr.length-1;//下标
for (int i = 0; i <= max; i++) {
int tempor = arr[i];//tempor = 数组的数 tempor = 19
arr[i]=arr[max]; //数组的数 = arr[下标] 19 = 50(arr[max]) arr[i] = 50
arr[max]=tempor;
// System.out.println("=========="+arr[max]);50=19 -->arr[max]=19
max--;
// System.out.println("----"+arr[max]);
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
1.10评委打分
1.10.1案例需求
- 在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。 选手的最后得分为:去掉一个最高分和一 个最低分后 的4个评委平均值 (不考虑小数部分)。
package com.bdit.day06;
import java.util.Scanner;
//在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。
//选手的最后得分为:去掉一个最高分和一个最低分后,选手的4个评委平均值 (不考虑小数部分)
public class Exercise10 {
public static void main(String[] args) {
int[] a=new int[6];
int i=0;
int all=0;
Scanner sc = new Scanner(System.in);
for (i = 0; i < a.length; i++) {
System.out.println("请第"+(i+1)+"个评委打分:");
int in = sc.nextInt();
a[i]=in;
}
int max =a[0];
int min =a[0];
// 以下两种都能输出数组a中的数据
for (int c=0;c<=a.length-1;c++){
//输出最大值
if(a[c]>max){
max=a[c];
}
//输出最小值
if (a[c] < min){
min = a[c];
}
//输出总值
all+=a[c];
}
System.out.println("最大值"+max);
System.out.println("最小值"+min);
System.out.println("总值"+all);
System.out.println("最终得分"+(all-(max+min)/(a.length-2)));
}
}
1.11、利滚利
- 复利的力量:也就是『利滚利』。每年购买1万元理财产品,收益率为10%,输入年数,返回未来资产总值。 按步骤编写代码,效果如图所示:
在这里插入图片描述
开发提示: 利滚利,就是前一年的利息,计入下一年的本金,从而构成复利。
计算公式:
package com;
public class Demo10 {
public static void main(String[] args) {
System.out.println("第二十年末:" + demo1(20));
}
public static int demo1(int x) {
//循环输出n次方
double z = 1;
for (int i = 1; i <= x; i++) {
double y = 1 + 0.1;
z *= y;
}
int c = 10000;
System.out.println("第一年末:" + c);
//计算利润公式,z是(1+利润)的n次方
int a = (int) (c * (z - 1) / 0.1);
for (int i = 1; i <= x; i++) {
//前一年的利息,计入下一年的本金
c += a;
}
return a;
}}