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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 精诚所至 于 2017-3-16 19:06 编辑

1.创建两个长度为10的数组,数组内的元素为随机生成的、不重复的1-100之间的整数
2.定义一个方法,传入两个数组,函数中将两个数组中不同的元素拼接成一个字符串,并且将该字符串以及字符串的长度输出到控制台上,如果没有则输出“对不起,两个数组的所有元素均相同”

附上这个题的答案,一个是老师给的,一个是我自己想的.
老师的
package cn.itcast.homework6;

import java.util.Random;

/*
        思路
                1.定义一个方法,用来为数组生成不重复的随机数赋值,方法参数是数组类型
                        循环生成随机数,每生成一个,就判断一下这个数组中是否包含这个数,如果不包含,就赋值,如果包含,就重新生成。
                        
        第二小问思路:
                        先遍历其中一个数组,拿其中的每一个元素去判断在另一个数组中是否存在,如果存在不拼接,如果不存在就拼接
                        再遍历另外一个数组,拿其中的每一个元素去判断在另一个数组中是否存在,如果存在不拼接,如果不存在就拼接
                        
*/
public class Test {
        public static void main(String[] args) {
                int[] arr1 = new int[10];
                int[] arr2 = new int[10];
                createRandomElment(arr1);
                createRandomElment(arr2);
                printArr(arr1);
                printArr(arr2);
                pinJie(arr1, arr2);
        }
        /*
         * 遍历数组
         */
        public static void printArr(int[] arr) {
                System.out.print("[");
                for(int i = 0; i < arr.length; i++) {
                        if(i == arr.length - 1) {
                                System.out.println(arr + "]");
                        } else {
                                System.out.print(arr+", ");
                        }
                }
        }
        /*
         * 为数组生成不重复的随机数
         */
        public static void createRandomElment(int[] arr) {
                Random r = new Random();
                //定义一个变量,用来当做已经赋值的索引
                int index = 0;
                //判断如果这个索引是 arr.length - 1。代表已经赋值满了,就结束循环
                while(index < arr.length) {//如果index < 数组的长度,代表赋值没有满
                        //生成随机数
                        int num = r.nextInt(100) + 1;
                        //判断一下这个数组中是否包含刚刚生成的随机数
                        boolean flag = exist(arr, num);
                        if(!flag) {//如果不存在
                                arr[index] = num;
                                index++;
                        }
                }
        }
        /*
         * 判断一下这个数组中是否包含这个数
         * 参数:数组,要判断的数
         * 遍历这个数组
         *         判断当前遍历到的数是否== 我们要判断的数,如果相等,直接返回 true
         *                            如果不等于,就一直继续遍历判断
         * 如果遍历完了都没有找到,返回false
         */
        public static boolean exist(int[] arr, int num) {
                for(int i = 0; i < arr.length; i++) {
                        if(arr == num) {
                                return true;
                        }
                }
                return false;
        }
        /*
         *
         * 定义一个方法,传入两个数组,方法中将两个数组不同的元素拼接成一个字符串,并且将该字符串以及字符串的长度输出到控制台上;
                如果没有则输出"对不起两个数组的所有元素均相同"
         * 第二小问思路:
                        先遍历其中一个数组,拿其中的每一个元素去判断在另一个数组中是否存在,如果存在不拼接,如果不存在就拼接
                        再遍历另外一个数组,拿其中的每一个元素去判断在另一个数组中是否存在,如果存在不拼接,如果不存在就拼接
         */
        /*
         * 方法两个参数 int[]  int[]
         */
        
        public static void pinJie(int[] arr1, int[] arr2) {
                //定义字符串类型变量,用来拼接
                String str = "";
//                先遍历其中一个数组,拿其中的每一个元素去判断在另一个数组中是否存在,如果存在不拼接,如果不存在就拼接
                for(int i = 0; i < arr1.length; i++) {
                        //判断当前遍历到的元素是否在另一数组中存在
                        boolean flag = exist(arr2,arr1);
                        if(!flag) {//如果不存在,就拼接
                                str = str + arr1 + " ";
                        }
                }
                //再遍历另外一个数组,拿其中的每一个元素去判断在另一个数组中是否存在,如果存在不拼接,如果不存在就拼接
                for(int i = 0; i < arr2.length; i++) {
                        //判断当前遍历到的元素是否在另一数组中存在
                        boolean flag = exist(arr1,arr2);
                        if(!flag) {//如果不存在,就拼接
                                str = str + arr2 + " ";
                        }
                }
                System.out.println(str);
                if(str.length() == 0) {
                        System.out.println("不存在");
                } else {
                        System.out.println("长度是" + str.length());
                }
        }
}        
        
我的
package homework;


import java.util.Random;

public class Test06 {
        public static void main(String[] args) {
                int[] arr1 = new int[10];
                int[] arr2 = new int[10];
                array(arr1);
                array(arr2);
                printArr(arr1);
                printArr(arr2);
               
                String str = "";
               
                str = pinJie(arr1, arr2, str);
               
                str = pinJie(arr2, arr1, str);
                print(str);
               
               
               
        }
        
        /*
         * 数组内元素为随机生成的、不重复的 1-100之间的整数
         * 返回值类型:void
         * 参数列表:int[] arr
         */
        public static void array(int[] arr) {
                Random r = new Random();
                for (int i = 0; i < arr.length; i++) {
                        //用while循环对arr赋值,如果出现重复的就重新赋值
                        while (true) {
                                int x = r.nextInt(100) + 1;
                                boolean equal = false;
                                for (int j = 0; j< i; j++) {
                                        if (x == arr[j]) {
                                                equal = true;
                                                break;
                                        }
                                }
                                if (!equal) {
                                        arr = x;
                                        break;
                                }                                       
                        }                        
                }
        }
        
        /*
         * 函数中将两个数组不同的元素拼接成一个字符串,并且将该字符串以及字符串的长度输出到控制台上;
         *     如果没有则输出"对不起两个数组的所有元素均相同"
         *返回值类型:void
         *参数列表:int[] arr1,int[] arr2
         *      
         */
        /*
         * 字符串拼接
         */
        public static String pinJie(int[] arr1, int[] arr2, String str) {
                for (int i = 0; i < arr1.length; i++) {
                        //arr1和arr2中的每个元素进行比较如果不同就赋值给字符串
                        boolean equal = false;
                        for (int j = 0; j < arr2.length; j++) {
                                if (arr1 == arr2[j]) {
                                        equal = true;
                                        break;
                                }                                
                        }
                        if (!equal) {
                                str = str + arr1 + " ";
                        }
                }
               
                return str;
        }
        
        /*
         * 将该字符串以及字符串的长度输出到控制台上;
        如果没有则输出"对不起两个数组的所有元素均相同"
         */
        public static void print(String str) {
                System.out.println(str);
                if(str.length() == 0) {
                        System.out.println("对不起两个数组的所有元素均相同");
                }else {
                        System.out.println("字符串的长度是" + str.length());
                }
        }
        /*
         * 遍历数组
         */
        public static void printArr(int[] arr) {
                System.out.print("[");
                for(int i = 0; i < arr.length; i++) {
                        if(i == arr.length - 1) {
                                System.out.println(arr + "]");
                        } else {
                                System.out.print(arr+", ");
                        }
                }
        }
        
}




        
        
        
        
        
        
        



来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端

11 个回复

倒序浏览
回复 使用道具 举报
不想说话,看代码吧
[Java] 纯文本查看 复制代码
import java.util.Random;
class Demo02{
	public static void main(String[] args){
		int[] arr1 = new int[10];
		int[] arr2 = new int[10];
		//创建Random对象
		Random r = new Random();
		for(int f = 0 ; f < arr1.length ; f ++){
			arr1[f] = r.nextInt(100)+1 ;
			if(f>1){
				for( int i = 0 ; i< arr1.length-1 ; i++){
				    for(int j = i+1 ; j < arr1.length ; j++){
				      if(arr1[i] == arr1[j]){
					  arr1[i] = r.nextInt(100)+1 ;
					  break ;
				       }    				
				   }
			
		       }
			}
		}
		
			
		for( int i = 0 ; i< arr1.length ; i++){
			System.out.print(arr1[i]+",");
		}
	    for(int f = 0 ; f < arr2.length ; f ++){
			arr2[f] = r.nextInt(100)+1 ;
			if(f>1){
				for(int k = 0 ; k< arr2.length ; k++){
					for(int j = k+1 ; j < arr2.length ; j++){
					  if(arr2[k] == arr2[j]){
					arr2[k] = r.nextInt(100)+1 ;
					break ;
				       }
				   }
				}
				
			  
		    }
		}
		System.out.println("换行");
			for(int i = 0 ; i< arr2.length ; i++){
			System.out.print(arr2[i]+",");
		}
		method(arr1,arr2);
		
	}
public static void method(int[] arr1 , int[] arr2){
			StringBuilder b = new StringBuilder();
			for(int j = 0 ; j< arr2.length ; j ++){					
			b.append(arr2[j]);
			}
			String str = b.toString();
			for(int i = 0; i < arr1.length ; i ++){
				String s = String.valueOf(arr1[i]);
				if(!(str.contains(s))){
					b.append(arr1[i]);
				}

			}
			String str2 = b.toString();
			System.out.println("字符串长度为:"+str2.length());
		for(int i = 0 ; i<str2.length() ;i++){
			System.out.print(str2.charAt(i));
		}
		}
	}
回复 使用道具 举报
亮仔开发 发表于 2017-3-16 00:31
不想说话,看代码吧
[mw_shl_code=java,true]import java.util.Random;
class Demo02{

写的很好,就是注释 太少看的相当懵
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
亮仔开发 发表于 2017-3-16 00:31
不想说话,看代码吧
[mw_shl_code=java,true]import java.util.Random;
class Demo02{

那个为什么是f>1,f<=1是也能出现重复的元素
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
亮仔开发 发表于 2017-3-16 00:31
不想说话,看代码吧
[mw_shl_code=java,true]import java.util.Random;
class Demo02{

不知道你有没有调试,感觉里面有好多错误
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
这题用集合做最简单,用数组的话就遍历吧
回复 使用道具 举报
陈大仙… 发表于 2017-3-16 08:21
这题用集合做最简单,用数组的话就遍历吧

集合还没有学呢
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
看没注释的代码真麻烦
回复 使用道具 举报
所以以后写程序的时候要规范写,要加上注释,方便以后调试查看
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
我也想知道1111111111111111111111
回复 使用道具 举报
我把答案附上了,好的话记得赏些黑马币
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马