一、数组练习:
1.使用两种方式定义一个整形的一维数组,获取数组中的值,为数组中的元素赋值,遍历一维数组
- 代码:
class SingleDimensionArray { public static void main(String[] args) { int[] arr1 = new int[3];//动态方法定义int类型数组 arr1[0] = 1; arr1[1] = 2; arr1[2] = 3; for (int i = 0 ; i < arr1.length ; i ++ ) { System.out.print(arr1[i] + " "); } System.out.println(); int[] arr2 = {1,2,3};//静态方法定义int类型数组 for (int j = 0 ; j < arr2.length ; j ++ ) { System.out.print(arr2[j] + " "); } }}复制代码
- 运行结果
2.使用静态初始化定义一个整形的二维数组,获取数组中的值,为数组中的元素赋值,遍历二维数组
- 代码:
class TwoDimensionArrayDemo { public static void main(String[] args) { //静态定义二维数组 int[][] arrDimensionArray = { {1,23,223},{232,6767,23,96},{1},{12,0},{1,9,65}}; for (int i = 0 ; i < arrDimensionArray.length ; i ++ ) { for (int j = 0 ; j < arrDimensionArray[i].length ; j ++ ) { System.out.print(arrDimensionArray[i][j] + " "); } System.out.println();//每个一维数组遍历完后换行 } }}复制代码
- 运行结果:
3.要统计一个公司三个销售小组中每个小组的总销售额以及整个公司的销售额
如下所示: 第一小组销售额为{11, 12}万元 第二小组销售额为{21, 22, 23}万元 第三小组销售额为{31, 32, 33, 34}万元
- 代码:
class SaleStatistics { public static void main(String[] args) { int[][] groupSale = { {11,12},{21,22,23},{31,32,33,34}}; int saleSum = 0;//初始化公司总销售额 for (int i = 0 ; i < groupSale.length ; i ++ ) { int groupSum = 0;//初始化各组销售总额 for (int j = 0 ; j < groupSale[i].length ; j ++ ) { groupSum += groupSale[i][j];//计数器,计算各组总销售额 } System.out.println("第 " + (i + 1) + " 小组的销售额: " + groupSum + " 万元"); saleSum += groupSum;//计数器,计算公司总销售额 } System.out.println("公司总销售额: " + saleSum + " 万元"); }}复制代码
- 运行结果:
4.随机点名器案例
- 代码:
/*随机点名器: 1.随机抽出3个女英雄进行点名 1.存储所有Dota女英雄姓名 2.预览所有英雄的姓名 3.随机出一个女英雄的姓名*/import java.util.Random;class RollCall { public static void main(String[] args) { String[] names = { "黑暗游侠","秀逗魔导师","月之女祭司","幻影刺客","水晶室女","魅惑魔女","月之骑士","痛苦女王","风行者","蛇发魔女","娜迦海妖","幽鬼","复仇之魂","圣堂刺客","仙女龙","死亡先知","育母蜘蛛"}; for (int i = 0 ; i < names.length ; i ++ ) { System.out.print(names[i] + " "); } Random ran = new Random(); System.out.println(); System.out.println("------------------------------------------------------------------"); System.out.println("Dota中共 " + (names.length + 1) + " 名女英雄,开始点名:"); for (int j = 1 ; j <= 3 ; j ++ ) { int index = ran.nextInt(names.length); System.out.println("第 " + j + " 个: " + names[index]); } }}复制代码
- 运行结果:
二、加强练习:
1.分析以下需求,并用代码实现:
- 员工的工龄和基本工资通过键盘录入
- 例如: 用户输入的工龄为10,基本工资为3000, 如果工龄大于等于10年 并且 工龄小于15年 基本工资涨5000;程序运行后打印格式"您目前工作了10年,基本工资为 3000元, 应涨工资 5000元,涨后工资 8000元" (线索:员工的工龄和基本工资,涨后工资都是一个变量,对工龄进行if判断)
- 完成工龄在以下区间范围内,涨不同的工资,打印格式同上 [0,1) +200 [1,3) +500 [3,5) +1000 [5,10) +2500 [10,15) +5000 [15,正无穷) +10000 (线索:基本工资和涨后工资是一个变量,用if..else判断工龄所在区间,如果满足,基本工资变量加涨的钱赋值给涨后工资)
- 代码:
import java.util.Scanner;class SalaryIncreaseRule { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int seniority = sc.nextInt();//输入工龄 int basicWageregularPay = sc.nextInt();//输入基本工资 int salary; if (seniority >= 0 && seniority < 1) { salary = basicWageregularPay + 200; }else if (seniority < 3) { salary = basicWageregularPay + 500; }else if (seniority < 5) { salary = basicWageregularPay + 1000; }else if (seniority < 10) { salary = basicWageregularPay + 2500; }else if (seniority < 15) { salary = basicWageregularPay + 5000; }else{ salary = basicWageregularPay + 10000; } System.out.println("您目前工作了 " + seniority + " 年,基本工资为 " + basicWageregularPay + " 元, " +"应涨工资 " + (salary-basicWageregularPay) + " 元,涨后工资 " + salary + " 元"); }}复制代码
- 运行结果:
2.看程序,分析下面程序的结果:
- 代码:
int x = 2,y=3;switch(x) {default: y++;case 3: y++;break;case 4: y++;}System.out.println("y="+y);复制代码
- 输出结果:
y=5
3.分析以下需求,并用代码实现:
a.键盘录入两个整数,求这两个数中最大的数和最小的数
(线索:用两个变量max,min,max和min都存储第一个数,第二个数与max比较如果大于max,覆盖掉max值;第二个数与min比较如果小于min,覆盖掉min的值)
- 代码:
import java.util.Scanner;class JudgeMaxOrMix { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入第一个数:"); int max = sc.nextInt(); int min = max; System.out.println("请输入第二个数:"); int secondNum = sc.nextInt(); if (secondNum < min) { min = secondNum; }else if (secondNum >= max) { max = secondNum; } System.out.println("min= "+min + " ,max= " + max); }}复制代码
- 运行结果:
b.定义一个长度为5的整形数组,为数组中的5个元素赋值,求出数组中最大的数和最小的数
(线索:用两个变量max,min,max和min都存储第一个数组的元素,从数组第二个元素开始,与max比较如果大于max,覆盖掉max值;与min比较如果小于min,覆盖掉min值)
- 代码:
class ArrayMaxOrMin { public static void main(String[] args) { int[] arr = {3,8,10,1,2};//静态定义数组 int max = arr[0]; int min = arr[0]; for (int i = 1; i < arr.length ; i ++ ) { if (arr[i] > max) { max = arr[i]; }else if (arr[i] < min) { min = arr[i]; } } System.out.println("max= " + max + " ,min= " + min); }}复制代码
- 运行结果:
c.将数组最大元素与最后一位元素进行交换,最小元素与第一位元素进行交换,并打印数组
(线索:在b)需求中,不但需要用min和max记录最小值和最大值,还需要两个变量minIndex和maxIndex分别来记录最小值和最大值的索引,然后利用索引来按需求交换两数交换可以尝试使用第三个变量完成)
例如:int[] arr={3,8,10,1,2} 最终数组的结果: arr={1,8,2,3,10}- 代码:
class SwapPermutation { public static void main(String[] args) { int[] arr = {3,8,10,1,2};//静态数组 int max = arr[0];//将数组第一个数赋值到max中 int min = arr[0];//将数组第一个数赋值到min中 int maxIndex = 0,minIndex = 0;//初始化最大值索引,最小值索引 for (int i = 1 ; i < arr.length ; i ++ ) {//遍历数组 if (arr[i] > max) { max = arr[i];//找出最大值 maxIndex = i;//把最大值的索引赋值给maxIndex }else if (arr[i] < min) { min = arr[i];//找出最小值 minIndex = i;//把最小值的索引赋值给minIndex } } int temp1 = arr[0];//将数组的第一个数赋值给临时变量temp1 int temp2 = arr[arr.length-1];//强数组的第二个数赋值给临时变量temp2 arr[0] = arr[minIndex];//将数组最小值赋值给数组的第一个数 arr[arr.length-1] = arr[maxIndex];//将数组中最大的书赋值给数组的最后一个数 arr[minIndex] = temp1;//交换最小值与数组第一个数 arr[maxIndex] = temp2;//交换最大值与数组最后一个数 for (int j = 0 ; j < arr.length ; j ++ ) {//遍历新数组 System.out.print(arr[j] + " ");//输出 } }}复制代码
- 运行结果: