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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 编号3363 中级黑马   /  2016-3-27 01:23  /  1683 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


/*

需求:对任意10个数进行排序。

思路:
1、先创建键盘录入对象;
2、创建一个一维数组存储输入的数值;
3、将逻辑判断部分封装在一个构造方法里。调用方法遍历数组,比较大小并按从小到大和从大到小的方式排序;
4、返回计算数值,输出并打印返回值。

*/

/**
版本号:1.7.0
*/


//导包。
import java.util.Scanner;


class ArrayPaixu{

        //主函数。
        public static void main(String[] args){

                Scanner sc = new Scanner(System.in);                        //创建键盘录入对象。

                int arr1[] = new int[10];                                //创建一个一维数组。

                for(int x=0; x<arr1.length; x++){                        //用for循环接收输入的数值。

                        System.out.print("尊敬的主人!\n\t您好!请输入第"+(x+1)+"个数值:");
                        arr1[x] = sc.nextInt();
                }

                //int result1 = xiaoDaPaixu(arr1);                        //调用从小到大排序的构造方法。

                //int result2 = daXiaoPaixu(arr1);                        //调用从大到小排序的构造方法。

                //System.out.println(result1+result2);                        //输入打印结果。


                xiaoDaPaixu(arr1);
                daXiaoPaixu(arr1);
        }



                public static void daXiaoPaixu(int[] arr){                        //从大到小排序的方法。

                        //用for嵌套循环遍历数组,并按从小到大的方式对数组进行排序。外循环比较大小,内循环排序。
                        for(int x=0; x<arr.length; x++){

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

                                        if(arr[x] > arr[y]){
                                                int temp = arr[x];
                                                arr[x] = arr[y];
                                                arr[y] = temp;
                                        }
                                }
                        }

                        //返回值不能为数组吗?
                        //return arr;

                        //打印输出结果。
                        System.out.print("\n尊敬的主人!\n\t您好!以下是这五个数值从小到大的排序结果:");

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

                                System.out.print(arr[z]);

                                if(z<arr.length-1)
                                        System.out.print("、");
                                else
                                        System.out.print("。");
                        }
                }




                public static void xiaoDaPaixu(int[] arr){                        //从小到大排序的构造方法。

                        //用for嵌套循环遍历数组,并按从大到小的方式对数组进行排序。外循环比较大小,内循环排序。
                        for(int x=0; x<10; x++){

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

                                        if(arr[x] < arr[y]){

                                                int temp = arr[x];
                                                arr[x] = arr[y];
                                                arr[y] = temp;
                                        }
                                }
                        }

                        //打印输出结果。
                        System.out.print("\n尊敬的主人!\n\t您好!以下是这五个数值从小到大的排序结果:");

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

                                System.out.print(arr[z]);

                                if(z<arr.length-1)
                                        System.out.print("、");
                                else
                                        System.out.print("。");
                        }
                }

}






15 个回复

倒序浏览
我去,,这么多方法,我还以为只一个方法呢
回复 使用道具 举报
唯爱唐嫣 发表于 2016-3-27 13:24
我去,,这么多方法,我还以为只一个方法呢

嗯,不过有些方法注释掉了。
回复 使用道具 举报
//返回值不能为数组吗?
//return arr;
可以啊,输出整合成一个方法更清晰
回复 使用道具 举报
dxw 发表于 2016-3-29 22:23
//返回值不能为数组吗?
//return arr;
可以啊,输出整合成一个方法更清晰

那代码该怎么写?
望赐教!
回复 使用道具 举报
本帖最后由 dxw 于 2016-3-29 23:24 编辑

import java.util.Scanner;

class ArrayPaixu {

        // 主函数。
        public static void main(String[] args) {

                Scanner sc = new Scanner(System.in); // 创建键盘录入对象。

                int arr1[] = new int[10]; // 创建一个一维数组。

                for (int x = 0; x < arr1.length; x++) { // 用for循环接收输入的数值。

                        System.out.print("尊敬的主人!\n\t您好!请输入第" + (x + 1) + "个数值:");
                        arr1[x] = sc.nextInt();
                }

                int[] result1 = xiaoDaPaixu(arr1); // 调用从小到大排序的构造方法。
                System.out.println("从小到大的排序为:");
                print(result1);
                int[] result2 = daXiaoPaixu(arr1); // 调用从大到小排序的构造方法。
                System.out.println("从大到小的排序为:");
                print(result2);

        }

        public static int[] daXiaoPaixu(int[] arr) { // 从大到小排序的方法。

                // 用for嵌套循环遍历数组,并按从小到大的方式对数组进行排序。外循环比较大小,内循环排序。
                       for (int x = 0; x < arr.length-1; x++) {
                        for (int y = x+1; y < arr.length; y++)  {

                                if (arr[x] > arr[y]) {
                                        int temp = arr[x];
                                        arr[x] = arr[y];
                                        arr[y] = temp;
                                }
                        }
                }

                // 返回值不能为数组吗?
                return arr;
        }

        public static int[] xiaoDaPaixu(int[] arr) { // 从小到大排序的构造方法。

                // 用for嵌套循环遍历数组,并按从大到小的方式对数组进行排序。外循环比较大小,内循环排序。
                       for (int x = 0; x < arr.length-1; x++) {
                        for (int y = x+1; y < arr.length; y++) {

                                if (arr[x] < arr[y]) {

                                        int temp = arr[x];
                                        arr[x] = arr[y];
                                        arr[y] = temp;
                                }
                        }
                }
                return arr;
        }

        public static void print(int arr[]) {
                System.out.print("[");
                for (int z = 0; z < arr.length; z++) {

                        System.out.print(arr[z]);

                        if (z < arr.length - 1)
                                System.out.print(",");
                        else
                                System.out.println("]");
                }
        }
}

点评

dxw
不用谢~你的排序思路好像冒泡法  发表于 2016-3-29 23:27

评分

参与人数 1黑马币 +2 收起 理由
编号3363 + 2 多谢多谢!意思意思!

查看全部评分

回复 使用道具 举报
兵蜂 中级黑马 2016-3-29 23:20:42
7#
可以将"for (int y = 0; y < arr.length; y++)"改为"for (int y = x; y < arr.length; y++)" ,这样好像也是没有问题的
回复 使用道具 举报
sAnChu 初级黑马 2016-3-30 00:05:21
8#
  1. import java.util.Scanner;
  2. class Qusetion2 {

  3.         public static void main(String[] args) {       

  4.                 Scanner sc = new Scanner(System.in);
  5.                 int[] arr = new int [5];
  6.                 System.out.println("请输入是5个数******排序*******");
  7.                 for (int i = 0 ; i<arr.length ;i++ ) {
  8.                         System.out.print("请输入第"+i+"个数:");
  9.                         arr[i] = sc.nextInt();
  10.                 }
  11.                 ArrayPx(arr);
  12.                 for (int i = 0 ; i<arr.length ;i++ ) {
  13.                         System.out.print(arr[i]+" ");
  14.                 }
  15.                 sc.nextInt();

  16.         }
  17.         public static void ArrayPx(int[] arr){
  18.                    for(int x=0; x<arr.length; x++){
  19.                                 for(int y=0; y<arr.length; y++){
  20.                                                 if(arr[x] > arr[y]){
  21.                                                                 int temp = arr[x];
  22.                                                                 arr[x] = arr[y];
  23.                                                                 arr[y] = temp;
  24.                                                 }
  25.                                 }
  26.                         }
  27.         }

  28. }
复制代码
回复 使用道具 举报
兵蜂 发表于 2016-3-29 23:20
可以将"for (int y = 0; y < arr.length; y++)"改为"for (int y = x; y < arr.length; y++)" ,这样好像也是 ...

嗯,我试试看。
回复 使用道具 举报

17行那个“sc.nextInt()”是用来干啥的?
回复 使用道具 举报
编号3363 发表于 2016-3-30 00:19
17行那个“sc.nextInt()”是用来干啥的?

才学java不会中断,一闪就过,自己琢磨出来的,让程序不闪
回复 使用道具 举报
sAnChu 发表于 2016-3-30 00:29
才学java不会中断,一闪就过,自己琢磨出来的,让程序不闪

有意思,多谢多谢!
回复 使用道具 举报
学习了  谢谢分享
回复 使用道具 举报
学习了!!!!!!!!!!
回复 使用道具 举报
学习了!冒泡排序,哈哈哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马