1.1 循环,if和switch练习 1.1.1 键盘录入月份,输出对应的季节(if…else或switch实现) 1.1.1.1 案例代码六:

package com.itheima;
  
import java.util.Scanner;
  
/*
 * 需求:键盘录入一个月份,输出该月份对应的季节。
 * 一年有四季
 * 3,4,5        春季
 * 6,7,8        夏季
 * 9,10,11        秋季
 * 12,1,2        冬季
 *
 * 分析:
 * A:键盘录入一个月份,用Scanner实现
 * B:判断该月份是几月,根据月份输出对应的季节
 * if
 * switch
 */
public class Test {
public static void main(String[] args) {
// 键盘录入一个月份,用Scanner实现
Scanner sc = new Scanner(System.in);
  
// 接收数据
System.out.println("请输入一个月份(1-12):");
int month = sc.nextInt();
  
// 判断该月份是几月,根据月份输出对应的季节
/*
if (month == 1) {
System.out.println("冬季");
} else if (month == 2) {
System.out.println("冬季");
} else if (month == 3) {
System.out.println("春季");
} else if (month == 4) {
System.out.println("春季");
} else if (month == 5) {
System.out.println("春季");
} else if (month == 6) {
System.out.println("夏季");
} else if (month == 7) {
System.out.println("夏季");
} else if (month == 8) {
System.out.println("夏季");
} else if (month == 9) {
System.out.println("秋季");
} else if (month == 10) {
System.out.println("秋季");
} else if (month == 11) {
System.out.println("秋季");
} else if (month == 12) {
System.out.println("冬季");
} else {
System.out.println("你输入的月份有误");
}
*/
//代码太长了,能不能简单一些呢?
//能,如何简单一些呢?
//我们可以把相同季节的月份放到一起来判断
//(month==3 || month==4 || month==5)
if(month==1 || month==2 || month==12) {
System.out.println("冬季");
}else if(month==3 || month==4 || month==5) {
System.out.println("春季");
}else if(month==6 || month==7|| month==8) {
System.out.println("夏季");
}else if(month==9 || month==10 || month==11) {
System.out.println("秋季");
}else {
System.out.println("你输入的月份有误");
}
}
}

1.1.1.2 案例代码七:

package com.itheima;
  
import java.util.Scanner;
  
/*
 * 需求:键盘录入一个月份,输出该月份对应的季节。
 * 一年有四季
 * 3,4,5        春季
 * 6,7,8        夏季
 * 9,10,11        秋季
 * 12,1,2        冬季
 *
 * 分析:
 * A:键盘录入一个月份,用Scanner实现
 * B:判断该月份是几月,根据月份输出对应的季节
 * if
 * switch
 *
 * case穿透。
 */
public class Test2 {
public static void main(String[] args) {
// 键盘录入一个月份,用Scanner实现
Scanner sc = new Scanner(System.in);
  
// 接收数据
System.out.println("请输入月份(1-12):");
int month = sc.nextInt();
  
// 用switch语句实现
/*
switch (month) {
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;
case 8:
System.out.println("夏季");
break;
case 9:
System.out.println("秋季");
break;
case 10:
System.out.println("秋季");
break;
case 11:
System.out.println("秋季");
break;
case 12:
System.out.println("冬季");
break;
default:
System.out.println("你输入的月份有误");
break;
}
*/
//case 穿透
/*
switch(month) {
case 1:
System.out.println("hello");
//break;
case 2:
System.out.println("world");
break;
default:
System.out.println("over");
break;
}
*/
//通过case穿透现象改进代码
switch(month) {
case 1:
case 2:
case 12:
System.out.println("冬季");
break;
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
default:
System.out.println("你输入的月份有误");
break;
}
}
}

1.1.2 打印5位数中所有的回文数1.1.2.1 案例代码八:

package com.itheima;
/*
 * 需求:打印5位数中的所有回文数。
 * 什么是回文数呢?举例:12321是回文数,个位与万位相同,十位与千位相同。
 *
 * 分析:
 * A:5位数告诉了我们数据的范围,用for循环实现
 * B:获取每一个5位数,然后得到它的个位,十位,千位,万位
 * 假设x是一个5位数:
 * 个位:x%10
 * 十位:x/10%10
 * 千位:x/10/10/10%10
 * 万位:x/10/10/10/10%10
 * C:把满足条件的数据输出即可
 */
public class Test3 {
public static void main(String[] args) {
//5位数告诉了我们数据的范围,用for循环实现
for(int x=10000; x<100000; x++) {
//获取每一个5位数,然后得到它的个位,十位,千位,万位
int ge = x%10;
int shi = x/10%10;
int qian = x/10/10/10%10;
int wan = x/10/10/10/10%10;
//把满足条件的数据输出即可
if((ge==wan) && (shi==qian)) {
System.out.println(x);
}
}
}
}

1.2 数组练习1.2.1 不死神兔问题 1.2.1.1 案例代码九

package com.itheima;
  
/*
 * 需求:
 * 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
 * 假如兔子都不死,问第二十个月的兔子对数为多少?
 *
 * 规律:
 * 第一个月:1
 * 第二个月:1
 * 第三个月:2
 * 第四个月:3
 * 第五个月:5
 * ...
 *
 * 规律:从第三个月开始,每个月的兔子对数是前两个月的兔子对数之和。
 * 第一个月和第二个月的兔子对数是1
 * 分析:
 * int[] arr = new int[20];
 *
 * arr[0] = 1;
 * arr[1] = 1;
 *
 * arr[2] = arr[0] + arr[1];
 * arr[3] = arr[1] + arr[2];
 * arr[4] = arr[2] + arr[3];
 * ...
 */
public class Test4 {
public static void main(String[] args) {
//定义数组
int[] arr = new int[20];
//初始化第一个月和第二个月的兔子对数c
arr[0] = 1;
arr[1] = 1;
for(int x=2; x<arr.length; x++) {
arr[x] = arr[x-2] + arr[x-1];
}
System.out.println("第二十个月的时候的兔子对数是:"+arr[19]);
}
}

1.2.2 求数组中满足要求的元素和 1.2.2.1 案例代码十:

package com.itheima;
  
/*
 * 需求:
 * (1)定义一个int类型的一维数组,内容为{171,72,19,16,118,51,210,7,18}
 * (2)求出该数组中满足要求的元素和。
 * 要求:求和的元素的个位和十位不能包含7,并且只能为偶数。
 *
 * 分析:
 * A:定义一个int类型的一维数组
 * B:定义一个求和变量
 * C:遍历数组,获取到数组中的每一个元素
 * D:判断该元素是否满足如下要求,如果是就累加,否则,不搭理它
 * x%2==0
 * x%10 != 7
 * x/10%10 !=7
 * E:输出结果
 */
public class Test5 {
public static void main(String[] args) {
//定义一个int类型的一维数组
int[] arr = {171,72,19,16,118,51,210,7,18};
//定义一个求和变量
int sum = 0;
//遍历数组,获取到数组中的每一个元素
for(int x=0; x<arr.length; x++) {
if((arr[x]%10 != 7) && (arr[x]/10%10 != 7) && (arr[x]%2 == 0)) {
sum += arr[x];
}
}
System.out.println("sum:"+sum);
}
}

1.2.3 裁判评分1.2.3.1 案例代码十一:

package com.itheima;
  
import java.util.Scanner;
  
/*
 * 需求:在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。
 * 选手的最后得分为:去掉一个最高分和一个最低分后 其余4个选手的平均值。
 * 请写代码实现。(不考虑小数部分)
 *
 * 分析:
 * A:定义一个长度为6的数组。
 * B:通过键盘录入的方式给出评委的分数
 * C:写方法实现获取数组中的最大值,最小值
 * D:写方法实现数组元素的求和
 * E:平均分: (和-最高分-最低分)/(arr.length-2)
 * F:输出分数即可
 */
public class Test6 {
public static void main(String[] args) {
//定义一个长度为6的数组
int[] arr = new int[6];
//通过键盘录入的方式给出评委的分数
Scanner sc = new Scanner(System.in);
for(int x=0; x<arr.length; x++) {
// arr[x] = sc.nextInt();
System.out.println("请给出第"+(x+1)+"个评委的分数(0-100):");
int number = sc.nextInt();
arr[x] = number;
}
//写方法实现获取数组中的最大值,最小值
int max = getMax(arr);
int min = getMin(arr);
//写方法实现数组元素的求和
int sum = sum(arr);
// (和-最高分-最低分)/(arr.length-2)
int avg = (sum-max-min)/(arr.length-2);
//输出分数即可
System.out.println("该选手的最终得分是:"+avg);
}
//数组元素求和
public static int sum(int[] arr) {
int sum = 0;
for(int x=0; x<arr.length; x++) {
sum += arr[x];
}
return sum;
}
//数组中的最小值
public static int getMin(int[] arr) {
int min = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x] < min) {
min = arr[x];
}
}
return min;
}
//数组中的最大值
public static int getMax(int[] arr) {
int max = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x] > max) {
max = arr[x];
}
}
return max;
}
}

1.2.4 数组反转 1.2.4.1 案例代码十二:

package com.itheima;
import java.util.Scanner;
  
/*
 * 需求:
 * (1)键盘录入5个int类型的数据存储数组arr中
 * (2)定义方法将arr数组中的内容反转
 * (3)定义方法对反转后的数组进行遍历
 *
 * 分析:
 * A:定义一个长度为5的数组
 * B:通过键盘录入数据给数组中的元素赋值
 * C:定义方法将arr数组中的内容反转
 * 什么是反转?如何反转?
 * D:定义方法遍历数组
 */
public class Test7 {
public static void main(String[] args) {
// 定义一个长度为5的数组
int[] arr = new int[5];
  
// 通过键盘录入数据给数组中的元素赋值
Scanner sc = new Scanner(System.in);
for (int x = 0; x < arr.length; x++) {
System.out.println("请给出第" + (x + 1) + "个元素");
arr[x] = sc.nextInt();
}
System.out.println("反转前的数组元素:");
printArray(arr);
  
// 定义方法将arr数组中的内容反转
reverse(arr);
System.out.println("反转后的数组元素:");
//定义方法遍历数组
printArray(arr);
}
//遍历数组
public static void printArray(int[] arr) {
System.out.print("[");
for(int x=0;x<arr.length; x++){
if(x == arr.length-1) {
System.out.println(arr[x]+"]");
}else {
System.out.print(arr[x]+", ");
}
}
}
  
/*
 * 两个明确: 返回值类型:void 参数列表:int[] arr
 */
public static void reverse(int[] arr) {
for(int startIndex=0,endIndex=arr.length-1;startIndex<=endIndex;startIndex++,endIndex--) {
int temp = arr[startIndex];
arr[startIndex] = arr[endIndex];
arr[endIndex] = temp;
}
}
}

1.2.5 数组基本查找 1.2.5.1 案例代码十三:

package com.itheima;
import java.util.Scanner;
/*
 *需求:数组元素查找(查找指定元素第一次在数组中出现的索引)
 *(1)给定数组int[] arr = {5,7,3,2,5};
 *(2)要查询的元素通过键盘录入的方式确定
 *(3)定义一个查找数组元素第一次出现位置的方法(注,要查找的元素就是键盘录入的数据)
 *
 *分析:
 *        A:给定数组int[] arr = {5,7,3,2,5};
 *        B:要查询的元素通过键盘录入的方式确定
 *        C:定义一个查找数组元素第一次出现位置的方法
 *        遍历数组,获取到每一个元素,进行比较,如果想等,就直接把该处的索引返回。
 *        D:调用方法,输出结果
 */
public class Test8 {
public static void main(String[] args) {
// 给定数组int[] arr = {5,7,3,2,5};
int[] arr = { 5, 7, 3, 2, 5 };
  
//要查询的元素通过键盘录入的方式确定
Scanner sc = new Scanner(System.in);
System.out.println("请输入要查找的元素:");
int number = sc.nextInt();
//定义一个查找数组元素第一次出现位置的方法
//调用方法
int index =getIndex(arr, number);
System.out.println("index:"+index);
}
/*
 * 两个明确:
 * 返回值类型:int
 * 参数列表:int[] arr,int value
 */
public static int getIndex(int[] arr,int value) {
//遍历数组,获取到每一个元素,进行比较,如果想等,就直接把该处的索引返回。
/*
for(int x=0; x<arr.length; x++) {
if(arr[x] == value) {
return x;
}
}
return -1;
*/
int index = -1;
for(int x=0; x<arr.length; x++) {
if(arr[x] == value) {
index = x;
break;
}
}
return index;
}
}

1.2.6 数据加密 1.2.6.1 案例代码十四:

package com.itheima;
  
import java.util.Scanner;
  
/*
 * 需求:键盘录入数据,要求数据是四位的整数,现需要对数据进行加密,加密规则如下:
 * 每位数字都加上5,然后除以10的余数代替该数字,
 * 再将第一位和第四位交换,第二位和第三位交换,
 * 请把加密后的数据输出到控制台
 *
 * 分析:
 * A:键盘录入一个四位数
 * B:对数据进行加密
 * 举例:
 * 4567
 * 把这个四位数分成个,十,百,千存储到数组中
 * int[] arr = {4,5,6,7};
 * 每位数字都加上5:
 * arr[x] += 5;        {9,10,11,12}
 * 然后除以10的余数代替该数字:
 * arr[x] %= 10;        {9,0,1,2}
 *  再将第一位和第四位交换,第二位和第三位交换:
 * {9,0,1,2}        {2,1,0,9}
 * C:输出加密后的数据
 */
public class Test9 {