1.分析以下需求,并用代码实现:
(1)定义一个int类型的二维数组
(2)获取该二维数组最小元素,并输出
//**************************************************************************************//
答:
import java.util.Scanner;
class Array_Test1 {
public static void main(String[] args) {
//1.创建键盘录入对象
Scanner sc =new Scanner(System.in);
//2.声明两个变量,表示数组的大小,并从键盘录入其大小
System.out.print("请输入数组大小:");
int m = sc.nextInt();
int n = sc.nextInt();
//3.声明一个整型二维数组
int[][] arr = new int[m][n];
//4调用方法输入数组
get2Array(m,n,arr);
//8.声明一个变量,用来接收方法的返回值
int min;
//9.调用方法,使用变量min来接收方法返回的值
min = getMinFrom2Array(arr);
//12.调用方法打印数组元素
print2Array(arr);
//13.输出数组的最小值
System.out.println("以上数组的最小值是:" + min);
}
/*
需求:键盘录入一个二维数组
返回值类型:void
参数列表:int m,int n,int[][] arr
*/
public static void get2Array(int m,int n,int[][] arr) {
//5.创建键盘录入对象
Scanner sc =new Scanner(System.in);
System.out.println("接下里请正确输入" + m + "行" + n + "列的二维数组元素.");
//6.用循环去遍历数组中的每一个元素,相应的对其进行初始化
for (int i = 0;i < arr.length;i ++) {
for (int j =0 ; j < arr[i].length ; j ++ ) {
//7.把键盘录入的数据赋值给相对应的数组元素
arr[i][j] = sc.nextInt();
}
}
}
/*
需求:遍历一个整型二维数组,并获取其最小值
返回值类型:int
参数列表:int[][] arr
*/
public static int getMinFrom2Array(int[][] arr) {
//10.声明一个整型变量来存放数组中的最小值,初始化为arr[0][0]
int min = arr[0][0];
//11.用for循环去遍历这个二维数组
for (int i = 0;i < arr.length;i ++) {
for (int j = 0;j < arr[i].length ;j ++ ) {
//10.使用min去与数组中的每一个元素作三元运算比较.
//如果min<arr[i][j],则把最小值赋给min.
//如果min>arr[i][j],则把最小值赋给min.
min = min < arr[i][j] ? min : arr[i][j];
}
}
return min;
}
/*
需求:打印一个整形二维组的所有元素
返回值类型:void
参数列表:int[][] arr
*/
public static void print2Array(int[][] arr){
for (int i = 0;i < arr.length;i ++) {
for (int j =0 ; j < arr[i].length ; j ++ ) {
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
}
}
//**************************************************************************************//
2.分析以下需求,并用代码实现:
(1)定义一个int类型的一维数组,内容为{6,2,9,15,1,5,20,7,18}
(2)将数组最大元素与最后一位元素进行交换,最小元素与第一位元素进行交换,并打印数组
提示思路:先查找最大值和最小值出现的索引。
//**************************************************************************************//
答:
class Array_Test2 {
public static void main(String[] args) {
//1.定义一个int类型的一位数组
int[] arr = {6,2,9,15,1,5,20,7,18};
//2.打印初始数组
System.out.println("初始数组");
printArray(arr);
//8.调用方法实现将数组最大元素与最后一位元素进行交换,最小元素与第一位元素进行交换
arrayElementExchange(arr);
//9.打印结果数组
System.out.println("结果数组");
printArray(arr);
}
/*
需求:遍历一个整型一维数组,并获取其最小值
返回值类型:int
参数列表:int[] arr
*/
public static int getArrayMin(int[] arr) {
int min = arr[0];
for (int i = 1;i < arr.length ;i ++ ) {
min = min < arr[i] ? min : arr[i];
}
return min;
}
/*
需求:遍历一个整型一维数组,并获取其最大值
返回值类型:int类型
参数列表:int[] arr
*/
public static int getArrayMax(int[] arr) {
int max = arr[0];
for (int i = 1;i < arr.length ;i ++ ) {
max = max > arr[i] ? max : arr[i];
}
return max;
}
/*
需求:将数组最大元素与最后一位元素进行交换,最小元素与第一位元素进行交换
返回值类型:void
参数列表:int[] arr
*/
public static void arrayElementExchange(int[] arr) {
//3.声明两个变量,一个接收最小值,一个接收最大值
int min;
int max;
//4.调用方法,获取其最小值与最大值
min = getArrayMin(arr);
max = getArrayMax(arr);
//5.声明两个标量分别标记最大值和最小值出现的位置
int indexMax = 0;
int indexMin = 0;
for (int i = 0;i < arr.length ;i ++ ) {
indexMax = max == arr[i] ? i : indexMax;
indexMin = min == arr[i] ? i : indexMin;
}
//6.交换最大值与最后一位的位置
arr[indexMax] = arr[indexMax] ^ arr[arr.length-1];
arr[arr.length-1] = arr[indexMax] ^ arr[arr.length-1];
arr[indexMax] = arr[indexMax] ^ arr[arr.length-1];
//7.交换最小值与第一位的位置
arr[indexMin] = arr[indexMin] ^ arr[0];
arr[0] = arr[indexMin] ^ arr[0];
arr[indexMin] = arr[indexMin] ^ arr[0];
}
/*
需求:打印一个整形一维组的所有元素
返回值类型:无返回值类型(void)类型
参数列表:int[] arr
*/
public static void printArray(int[] arr){
for (int i = 0;i < arr.length ;i ++ ) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
}
//**************************************************************************************//
3.分析以下需求,并用代码实现:(扩展)
(1)键盘录入6个int类型的数据存数数组arr中
(2)将arr数组中的内容反转
(3)将翻转后的数组角标为奇数的互相交换 1和3换, 3和5换,以此类推
(4)最后将数组最后一个角标为奇数的元素 和数组中第一个角标为奇数的元素交换
(5)打印最终的数组(实现了1-4步之后的数组)
(6)如:用户输入的6个int数字为[1,2,3,4,5,6],最后输出的结果为[6, 5, 4, 1, 2, 3]
//**************************************************************************************//
答:
import java.util.Scanner;
class Array_Test3 {
public static void main(String[] args) {
//1.声明一个长度为6的整型一维数组
int [] arr = new int[6];
//2.调用数组录入方法,从键盘录入数组
inputArray(arr);
//3.对数组进行翻转操作
turnArray(arr);
//4.将翻转后的数组角标为奇数的互相交换 1和3换, 3和5换,以此类推
oddNumberExchange(arr);
//5.将数组最后一个角标为奇数的元素 和数组中第一个角标为奇数的元素交换
firstAndLastNumberExchange(arr);
//6.打印最终的数组
printArray(arr);
}
/*
功能:键盘录入6个int类型的数据存数数组arr中
返回值类型:void
参数列表:int[] arr
*/
public static void inputArray(int[] arr) {
Scanner sc = new Scanner(System.in);
System.out.println("请正确输入六个整型的数据:");
for (int i = 0;i < arr.length ;i ++ ) {
arr[i] = sc.nextInt();
}
}
/*
功能:将arr数组中的内容翻转
返回值类型:void
参数列表:int[] arr
*/
public static void turnArray(int[] arr) {
for (int i = 0;i < arr.length/2;i ++) {
arr[i] = arr[i] ^ arr[arr.length-1-i];
arr[arr.length-1-i] = arr[i] ^ arr[arr.length-1-i];
arr[i] = arr[i] ^ arr[arr.length-1-i];
}
}
/*
功能:将翻转后的数组角标为奇数的互相交换 1和3换, 3和5换,以此类推
返回值类型:void
参数列表:int[] arr
*/
public static void oddNumberExchange(int[] arr) {
for (int i = 0;i < arr.length ;i ++ ) {
if ((i % 2 ==1) && (i + 2 < arr.length)) {
arr[i] = arr[i] ^ arr[i + 2];
arr[i + 2] = arr[i] ^ arr[i + 2];
arr[i] = arr[i] ^ arr[i + 2];
}
}
}
/*
功能:将数组最后一个角标为奇数的元素 和数组中第一个角标为奇数的元素交换
返回值类型:void
参数列表:int[] arr
*/
public static void firstAndLastNumberExchange(int[] arr) {
int first = 0; //记录第一个角标为奇数的元素的角标
int last = 0; //记录最后一个角标为奇数元素的角标
for (int i = 0;i < arr.length ;i ++ ) {
if ((i % 2 == 1) && (arr[i] % 2 == 1)) {
first = i;
break;
}
}
for (int i = arr.length -1;i > 0;i -- ) {
if ((i % 2 == 1) && (arr[i] % 2 == 1)) {
last = i;
break;
}
}
arr[first] = arr[first] ^ arr[last];
arr[last] = arr[first] ^ arr[last];
arr[first] = arr[first] ^ arr[last];
}
/*
功能:打印数组
返回值类型:void
参数列表:int[] arr
*/
public static void printArray(int[] arr) {
for (int i = 0;i < arr.length;i ++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
}
//**************************************************************************************//
|
|