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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ZP515630 初级黑马   /  2017-3-6 23:45  /  1858 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.Scanner;

/*
1.键盘录入10个整数存入数组中
2.定义一个方法将奇数放在数组的左侧,偶数放在数组的右侧
3.定义一个方法打印原数组和处理后的数组
4.定义一个方法传入一个int类型数组,输出这个数组中只出现一次的数字及个数
*/
public class Test04 {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入整数");
                int[] arr = new int[10];
                for (int i = 0; i < arr.length; i++) {
                        arr[i] = sc.nextInt();
                }
                int[] arrtemp = getarr(arr); //调用第一个方法转换奇数偶数
                print(arr, arrtemp);//调用第二个方法演示
                intarr(arr);//第三种方法
        }
       
       
        //第一个方法
        public static int[] getarr(int[] arr) {
                int[] arr1 = new int[arr.length]; //常见一个存放变化后的数组
                int[] temp1 = new int[arr.length];//创建一个临时存放数组
                int[] temp2 = new int[arr.length];//创建一个临时数组
                int s = 0, b = 0, e = 0;
                for (int i = 0; i < arr.length; i++) {
                        if ((arr[i] - 1) % 2 == 0) { // 奇数
                                temp1[s] = arr[i];
                                s++;//记数
                        }
                        if (arr[i] % 2 == 0) {// 偶数
                                temp2[b] = arr[i];
                                b++;//记数
                        }
                }
                for (int i = 0; i < arr1.length; i++) {
                        if (i < s) { //判断前s个元素写入数组
                               
                                arr1[i] = temp1[i];
                                // System.out.println(arr1);
                        }
                        if ((i - s) >= 0 && (i - s) <= b) //判断后sb个元素写入数组
                                arr1[i] = temp2[e++];

                }
                return arr1;
        }
        //第二个 方法 打印
        public static void print(int[] arr, int[] arrtemp) {
                System.out.print("原数组:{");
                for (int i = 0; i < arr.length; i++) {
                        if (i == arr.length - 1) {
                                System.out.print(arr[i] + "}");
                        } else {
                                System.out.print(arr[i] + ",");
                        }
                }
                System.out.println();
                System.out.print("新数组:{");
                for (int i = 0; i < arr.length; i++) {
                        if (i == arr.length - 1) {
                                System.out.print(arrtemp[i] + "}");
                        } else {
                                System.out.print( arrtemp[i] + ",");
                        }
                }
        }

        //第三个方法
        public static void intarr(int[] arr) {
                //int[] arr = { 32, 11, 77, 22, 20, 11, 77, 77, 11, 32 };
                int n = 0;
                int[] temp = new int[arr.length];
                for (int i = 0; i < arr.length; i++) {
                        if (arr[i] == 0 )
                                n++;       
                }
                System.out.println();
                System.out.print("统    计:{");
                for (int i = 0; i < arr.length; i++) {
                        int b = 1;
                        for (int a = i + 1; a < arr.length; a++) {
                                if (arr[i] == arr[a]) { // 遍历比较重复数为true
                                        arr[a] = 0;// 当为重复的数时,赋值0
                                        b++;// 重复记数
                                }
                        }
                        if (arr[i] != 0) { // 判断当遍历时 不等于0时为true
                                temp[i] = b;// 将重复的元素的记数同步写入新的数组
                        }
                        if (temp[i] == 1) { // 判断如果等于0则不输出
                                String num = arr[i] + "有" + (temp[i])+"个";
                                if (i == arr.length-1) {
                                        System.out.print(num);
                                } else {
                                        System.out.print(num+",");
                                       
                                }
                        }
                }
                if (n == 1) {
                System.out.println("0"+"有"+n+"个"+"}");
                } else {
                System.out.println("}");       
                }
        }

       
}


3 个回复

倒序浏览
最后一问看起来简单,想了一晚上还是不会
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
高手真的一天发四贴啊
回复 使用道具 举报
哎 ,最后一个方法表示不会.顿时感觉自己的逻辑思维差的......
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马