综合练习
减肥计划if版
package cn.wang.practice.practice;
import java.util.Scanner;
/*
输入星期数(1-7),显示今天的减肥计划(if)
周一:跑步
周二:游泳
周三:慢走
周四:动感单车
周五:拳击
周六:爬山
周日:好好吃一顿
*/
public class WeightLossProgram {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入星期数(1-7):");
int week = sc.nextInt();
if(week == 1){
System.out.println("跑步");
}else if (week == 2){
System.out.println("游泳");
}else if (week == 3){
System.out.println("慢走");
}else if (week == 4){
System.out.println("动感单车");
}else if (week == 5){
System.out.println("拳击");
}else if (week == 6){
System.out.println("爬山");
}else if (week == 7){
System.out.println("好好吃一顿");
}else {
System.out.println("输入有误");
}
}
}
减肥计划switch版
package cn.wang.practice.practice;
import java.util.Scanner;
/*
输入星期数(1-7),显示今天的减肥计划(switch)
周一:跑步
周二:游泳
周三:慢走
周四:动感单车
周五:拳击
周六:爬山
周日:好好吃一顿
*/
public class WeightLossProgramSwitch {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入一个星期数(1-7):");
int week = sc.nextInt();
switch (week) {
case 1:
System.out.println("跑步");
break;
case 2:
System.out.println("游泳");
break;
case 3:
System.out.println("慢走");
break;
case 4:
System.out.println("动感单车");
break;
case 5:
System.out.println("拳击");
break;
case 6:
System.out.println("爬山");
break;
case 7:
System.out.println("好好吃一顿");
break;
default:
System.out.println("输入有误");
break;
}
}
}
逢七过
package cn.wang.practice.practice;
/*
逢七过:在控制台每打印六个(1-100之间包含7或是7的倍数的数字)就换一下行
*/
public class SkipSeven {
public static void main(String[] args) {
int num = 0;
for (int i = 1; i < 101; i++) {
int a = i % 10;
int b = i / 10 % 10;
if(a == 7 || b == 7 || i % 7 == 0){
num++;
System.out.print(i + " ");
if (num % 6 == 0){
System.out.println();
}
}
}
}
}
不死神兔
package cn.wang.practice.practice;
/*有一对兔子,从出生第三个月起每月都生下一对兔子,小兔子长到第三个月后每个月又生一对兔子,
假如兔子不死,问第二十个月的兔子对数为多少?
规律:第一个月,第二个月,第三个月,第四个月,第五个月
1 1 2 3 5
从第三个月开始,这个月的兔子对数是上个月和上上个月兔子对数的和,
最后一个月,就是所有兔子的对数
*/
public class UndeadRabbit {
public static void main(String[] args) {
int[] arr =new int[20];
arr[0] = 1;
arr[1] = 1;
for (int i = 2; i < 20; i++) {
arr[i] = arr[i - 1] + arr[i - 2];
}
System.out.println("第二十个月的兔子对数为:"+ arr[19]);
}
}
百钱百鸡
package cn.wang.practice.practice;
/*
公鸡一只五元,母鸡一只三元,小鸡三只一元。一百块钱买一百只鸡,
问公鸡、母鸡、小鸡各多少个
*/
public class HundredDollarHundredChicken {
public static void main(String[] args) {
//公鸡范围只能是0<=i<=20
for (int i = 0; i <= 20 ; i++) {
//母鸡范围只能是0<=j<=33
for (int j = 0; j <=33 ; j++) {
//小鸡只数只能是整数,又因为它的数量为(100-i-j)所以(100-i-j) % 3 == 0
//而三种鸡的钱数加一块是100,所以必须满足(5*i + 3*j +(100-i-j)/3)==100
if ((100-i-j) % 3 == 0 && (5*i + 3*j +(100-i-j)/3)==100){
System.out.println("公鸡数:"+i+",母鸡数:"+j+",小鸡数:"+(100-i-j));
}
}
}
}
}
数组元素求和
package cn.wang.practice.practice;
/*
有一个数组,元素是{68,27,95,88,171,996,51,210},求出该数组中满足要求的元素和。
要求:求和的元素个位和十位都不能是7,并且只能是偶数
*/
public class ArraySum {
public static void main(String[] args) {
int[] arr = {68,27,95,88,171,996,51,210};
int sum = 0;
for (int i = 0; i < arr.length; i++) {
int a = arr[i] % 10;
int b = arr[i] / 10 % 10;
if (a != 7 && b != 7 && arr[i] % 2 == 0){
sum += arr[i];
}
}
System.out.println("满足要求的元素和:" + sum);
}
}
数组内容相同
package cn.wang.practice.practice;
/*
设计一个方法,用于比较两个数组的内容是否相等
*/
public class MethodEqual {
public static void main(String[] args) {
int[] arr ={11,22,33,44,55};
int[] arr1 ={55,11,22,33,44};
boolean result = equals(arr,arr1);
System.out.println(result);
}
//创建方法
public static boolean equals(int[] arr,int[] arr1){
if (arr.length != arr1.length){
return false;
}
for (int i = 0; i <arr.length ; i++) {
if (arr[i] != arr1[i]){
return false;
}
}
return true;
}
}
查找
package cn.wang.practice.practice;
import java.util.Scanner;
/*
已知一个数组arr = {19,28,37,46,50};键盘输入一个数据,查找该数据在数组中的索引,
并在控制台输出找到的索引
*/
public class ArraySeek {
public static void main(String[] args) {
int[] arr = {19,28,37,46,50};
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数据:");
int num = sc.nextInt();
int result = seek(arr,num);
System.out.println("该数据的索引是:" + result);
}
public static int seek(int[] arr,int number){
int index = -1;
for (int i = 0; i < arr.length; i++) {
if (number == arr[i]){
index = i;
break;
}
}
return index;
}
}
反转
package cn.wang.practice.practice;
/*
已知一个数组arr = {19,28,37,46,50};用程序实现把数组中的元素值交换,
交换后的数组arr = {50,46,37,28,19};并在控制台输出交换后的数组元素
*/
public class ArrayReverse {
public static void main(String[] args) {
int[] arr = {19,28,37,46,50};
reverse(arr);
}
public static void reverse(int[] arr){
for (int start = 0,end = arr.length-1 ; start <end; start++,end--) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
for (int i = 0; i < arr.length; i++) {
if (i==0){
System.out.print("["+arr[i]);
}else if (i == arr.length-1){
System.out.println(","+ arr[i]+"]");
}else {
System.out.print(","+arr[i]);
}
}
}
}
评委打分
package cn.wang.practice.practice;
import java.util.Scanner;
/*
有6位评委打分,分数为0-100的整数。
选手最后得分:去掉一个最高分和最低分后剩下评委的平均值(不考虑小数)
*/
public class JudgesScoring {
public static void main(String[] args) {
int[] arr = new int[6];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入第" + (i + 1) + "位评委的分数(0-100):");
int num = sc.nextInt();
arr[i] = num;
}
System.out.print("评委打的分数为:");
printArray(arr);
int max = getMax(arr);
int min = getMin(arr);
int sum = getSum(arr);
int result = (sum - max - min) / 4;
System.out.println("选手最终得分:" + result);
}
public static void printArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
if (i == 0) {
System.out.print("[" + arr[i]);
} else if (i == arr.length - 1) {
System.out.println("," + arr[i] + "]");
} else {
System.out.print("," + arr[i]);
}
}
}
public static int getSum(int[] arr) {
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
public static int getMax(int[] arr) {
int max = 0;
for (int i = 0; i < arr.length; i++) {
max = max > arr[i] ? max : arr[i];
}
return max;
}
public static int getMin(int[] arr) {
int min = arr[0];
for (int i = 0; i < arr.length; i++) {
min = min < arr[i] ? min : arr[i];
}
return min;
}
}
习题
第一题:分析以下需求并实现
(1)定义方法public static boolean isSym(int[] arr),判断数组中的元素值是否对称,对称返回true,不对称返回false;
(2)在main方法中,定义一个数组,并调用方法。
(3)打印结果:[1,2,3,4,3,2,1]是否对称:true
第二题:分析以下需求并实现
(1)定义一个长度为6的int类型数组,元素值使用随机数生成(范围为50-80)
(2)求出该数组中满足要求的元素和。
要求:求和的元素的个位和十位不能包含7,并且只能为偶数。
昨日习题答案
第一题:分析以下需求,并用代码实现(每个小需求都需要封装成方法)
1.求两个整数之和
2.求两个小数之和
3.判断两个整数是否相等
4.判断两个小数是否相等
5.获取两个整数中较大的值
6.获取两个小数中较大的值
7.获取两个整数中较小的值
8.获取两个小数中较小的值
9.用一个方法获取两个整数中较大的值或较小的值*/
public class Test1 {
public static void main(String[] args) {
int a = 10;
int b = 15;
//求两个整数之和
int sum_int = sum(a, b);
System.out.println(sum_int);
//求两个小数之和
double c = 11.11;
double d = 12.12;
double sum_double = sum(c, d);
System.out.println(sum_double);
//判断两个整数是否相等
int e = 12;
int f = 13;
boolean equals_int = equals(e, f);
System.out.println(equals_int);
//判断两个小数是否相等
double g = 12.23;
double h = 12.23;
boolean equals_double = equals(g, h);
System.out.println(equals_double);
//获取两个整数中较大的值
int i = 23;
int j = 24;
int max_int = max(i, j);
System.out.println(max_int);
//获取两个小数中较大的值
double k = 45.4;
double l = 55.55;
double max_double = max(k, l);
System.out.println(max_double);
//获取两个整数中较小的值
int m = 36;
int n = 24;
int min_int = min(m, n);
System.out.println(min_int);
//获取两个小数中较大小的值
double o = 45.4;
double p = 55.55;
double min_double = min(o, p);
System.out.println(min_double);
//用一个方法获取两个整数中较大的值或较小的值
int w = 34;
int x = 25;
//传入flag变量,来确认是返回最大值还是最小值
int max_num = max_min(w, x, 1);
System.out.println(max_num);
int min_num = max_min(w, x, 0);
System.out.println(min_num);
}
public static int sum(int a, int b) {
return a + b;
}
public static double sum(double c, double d) {
return c + d;
}
public static boolean equals(int e, int f) {
return e == f;
}
public static boolean equals(double g, double h) {
return g == h;
}
public static int max(int i, int j) {
if (i > j) {
return i;
} else {
return j;
}
}
public static double max(double k, double l) {
if (k > l) {
return k;
} else {
return l;
}
}
public static int min(int m, int n) {
if (m > n) {
return n;
} else {
return m;
}
}
public static double min(double o, double p) {
if (o > p) {
return p;
} else {
return o;
}
}
public static int max_min(int w, int x, int flag) {
if (flag == 1) {
//求最大值
if (w > x) {
return w;
} else {
return x;
}
} else {
//求最小值
if (w > x) {
return x;
} else {
return w;
}
}
}
}
第二题:
1.定义方法public static boolean isSXH(int num),
功能:判断数字num是否是水仙花数,如果是返回true,如果不是返回false。
2.在main方法中调用该方法,传入数字,打印结果。(所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。)
打印:传入数字153,结果为true,该数字是水仙花数。
public class Test2 {
public static void main(String[] args) {
int num = 153;
//定义一个boolean类型的变量接收返回值
boolean flag = isSXH(num);
System.out.println(flag);
}
public static boolean isSXH(int num) {
//取出各位 十位 百位的数字
int ge = num % 10;
int shi = num / 10 % 10;
int bai = num / 100;
if (ge * ge * ge + shi * shi * shi + bai * bai * bai == num) {
return true;
} else {
return false;
}
}
}