首页 > 代码库 > JAVA学习第六天

JAVA学习第六天

1-键盘录入月份,输出对应的季节。一年有四季;3,4,5春季;6,7,8夏季;9,10,11秋季;12,1,2冬季

public class Demo02Test {

public static void main(String[] args) {

// 键盘录入一个月份,用Scanner实现

Scanner sc = new Scanner(System.in);

// 接收数据

System.out.println("请输入月份(1-12):");

int month = sc.nextInt();

//通过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;

}

}

}



2-打印5位数中所有的回文数:什么是回文数呢?举例:12321是回文数,个位与万位相同,十位与千位相同。

public class Demo03Test {

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);

}

}

}

}



3-定义一个int类型的一维数组,内容为{171,72,19,16,118,51,210,7,18}。求出该数组中满足以下要求的元素和。求和的元素的个位和十位不能包含7,并且只能为偶数。

public class Demo05Test {

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);

}

}


4-(1)在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。

(2)选手的最后得分为:去掉一个最高分和一个最低分后 其余4个选手的平均值。

(3)请写代码实现。(不考虑小数部分)

public class Demo06Test {

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++) {

System.out.println("请给出第"+(x+1)+"个评委的分数(0-100):");

/*int number = sc.nextInt();

arr[x] = number;*/

arr[x] = sc.nextInt();

}

//写方法实现获取数组中的最大值,最小值

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;

}

}



5-(1)键盘录入5个int类型的数据存储数组arr中

(2)定义方法将arr数组中的内容反转

(3)定义方法对反转后的数组进行遍历

public class Demo07Test {

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 min = 0,max = arr.length-1;

布尔表达式:min<max;

步进表达式:min++,max--;

*/

for(int min=0,max=arr.length-1;min < max;min++,max--) {

//利用第三方变量完成数组中的元素交换

int temp = arr[min];

arr[min] = arr[max];

arr[max] = temp;

}

}

}


6-需求:数组元素查找(查找指定元素第一次在数组中出现的索引)

(1)给定数组int[] arr = {5,7,3,2,5};

(2)要查询的元素通过键盘录入的方式确定

(3)定义一个查找数组元素第一次出现位置的方法(注,要查找的元素就是键盘录入的数据), 如果没有找到返回-1

public class Demo08Test {

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;

}

}

//遍历完毕,没有相等的返回-1。

return -1;

*/

int index = -1;

for(int x=0; x<arr.length; x++) {

if(arr[x] == value) {

index = x;

break;

}

}

return index;

}

}


7-有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?

public class Demo04Test {

public static void main(String[] args) {

//定义数组

int[] arr = new int[20];

//初始化第一个月和第二个月的兔子对数

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]);

}

}


JAVA学习第六天