黑马程序员技术交流社区
标题:
将数组相关的操作方法封装成类及其调用实现
[打印本页]
作者:
samge
时间:
2015-11-14 02:17
标题:
将数组相关的操作方法封装成类及其调用实现
/**
思路:
1、定义一个数组操作的类,该类有求数组最大最小值、选择/冒泡排序、打印数组的功能
2、选择/冒泡排序需要进行数据的交换,将交换独立为一个方法
3、对外的方法公用化,外部用不到的方法私有化
4、一般操作数组是不需要用到数组操作类的对象,所以将方法静态化直接通过类名访问即可,
为了防止被创建对象,将空参构造函数设为私有的
*/
class ArrayTool {
//将空参构造函数私有
private ArrayTool(){};
//遍历打印数组的方法
public static void arrayPrint(int[] arr){
System.out.print("[");
for(int i = 0;i < arr.length-1;i++){
System.out.print(arr[i]+",");
}
System.out.println(arr[arr.length-1]+"]");
}
//实现数组中两个数的交换,这里设置为私有的
private static void arrayChange(int[] arr,int x,int y){
int temp =arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
//求数组中的最大值
public static int getMax(int[] arr){
int max = arr[0];
for(int i = 1;i < arr.length;i++){
if(max < arr[i])
max = arr[i];
}
return max;
}
//求数组中的最小值
public static int getMin(int[] arr){
int min = arr[0];
for(int i = 1;i < arr.length;i++){
if(min > arr[i])
min = arr[i];
}
return min;
}
//定义一个选择排序方法
public static void selectSort(int[] arr){
//这里是拿前一个元素跟后面每个元素比较,发现比自己小的则置换位置
for(int i = 0;i < arr.length;i++){
for(int j = i+1;j<arr.length;j++){
if(arr[i] > arr[j])
arrayChange(arr,i,j);
}
//外循环执行完一次,打印一次过程
arrayPrint(arr);
}
}
//定义一个冒泡排序方法
public static void maoPaoSort(int[] arr){
for(int i = 0;i < arr.length-1;i++){
for(int j = 0;j<arr.length-i-1;j++){
if(arr[j] > arr[j+1])
arrayChange(arr,j,j+1);
}
//外循环执行完一次,打印一次过程
arrayPrint(arr);
}
}
}
复制代码
上面的是一个数组一些方法封装在一个ArrayTool类里面,以后需要用到相关操作的话可以直接调用该类方法。其中,该类已经被设置为不能实例化,用static开放了一下方法供外部使用,可以直接以 类名.类方法名();来执行。而下面定义了一个ArrayDemo类进行相关操作的测试。测试证明一切ok。之前有写过冒泡跟选择排序方法等与数组相关的方法,现在学面向对象了,就将这些类似的方法封装在一个类里面以供以后使用方便。下面是ArrayDemo类的代码:
import java.util.*;
class ArrayDemo {
public static void main(String[] args) {
//建立一个Sanner对象从键盘获取数值
Scanner sc = new Scanner(System.in);
//自定义数组长度
System.out.print("请输入你要定义的数组长度:");
int n = sc.nextInt();
int [] arr = new int[n];
for(int i = 0;i < n;i++){
System.out.print("请输入数组的"+(i+1)+"个数:");
//数组接收从键盘录入的数据
arr[i] = sc.nextInt();
}
//打印数组
ArrayTool.arrayPrint(arr);
//求数组的最大值
int max = ArrayTool.getMax(arr);
System.out.println("max = "+max);
//求数组的最小值
int min = ArrayTool.getMin(arr);
System.out.println("min = "+min);
/*
//选择排序输出
System.out.println("排序过程:");
//打印原数组
ArrayTool.arrayPrint(arr);
//开始排序
ArrayTool.selectSort(arr);
System.out.println("排序后:");
ArrayTool.arrayPrint(arr);
*/
System.out.println("——————————————————————————————————————");
//选择冒泡输出
System.out.println("排序过程:");
//打印原数组
ArrayTool.arrayPrint(arr);
//开始冒泡排序
ArrayTool.maoPaoSort(arr);
System.out.println("排序后:");
ArrayTool.arrayPrint(arr);
}
}
复制代码
作者:
samge
时间:
2015-11-14 02:20
ArrayDemo类是用Scanner对象从键盘获取数值,从而可以构建可变长度的数组再进行操作。当然,代码属于初级的,很多地方没有考虑周到。还望同学们指点,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2