A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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.交换最大值与最后一位的位置
  numberChange(arr,indexMax,arr.length-1);
  //7.交换最小值与第一位的位置
  numberChange(arr,indexMin,0);
}
/*
  功能:交换两个引用类型数的位置
  返回值类型:void
  参数列表:int[] arr,int x,int y
*/
public static void numberChange(int[] arr,int x,int y) {
  arr[x] = arr[x] ^ arr[y];
  arr[y] = arr[x] ^ arr[y];
  arr[x] = arr[x] ^ arr[y];
  
}
/*
  需求:打印一个整形一维组的所有元素
  返回值类型:无返回值类型(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 ++) {
   numberChange(arr,i,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)) {
    numberChange(arr,i,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;
   }
  }
  numberChange(arr,first,last);  
}
/*
  功能:交换两个引用类型数的位置
  返回值类型:void
  参数列表:int[] arr,int x,int y
*/
public static void numberChange(int[] arr,int x,int y) {
  arr[x] = arr[x] ^ arr[y];
  arr[y] = arr[x] ^ arr[y];
  arr[x] = arr[x] ^ arr[y];
  
}
/*
  功能:打印数组
  返回值类型: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();
}
}
//**************************************************************************************//

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马