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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

需求:1.返回一个存储10个4位数的随机整数 1000-9999的数组(注意思考怎么产生一个4位的随机整数)(不能重  复)
        2.在方法中遍历这个随机数数组       
老师源代码
(import java.util.Random;
public class Demo{
        public static void main(String[] args){
            int[] arr = method();
                for(int i = 0; i < arr.length; i++){
                        System.out.println(arr[i]);
                }
        }
        public static int[] method(){
                Random r = new Random();
                int[] arr = new int[10];
                int i = 0;
                while(i < 10){
                        int num = r.nextInt(9000)+1000;
                        for(int j = 0 ; j < arr.length; j++){
                                if(num == arr[i]){
                                        break;
                                }
                        }
                        arr[i]=num;
                        i++;
                }
                return arr;
        }
})
输出结果:3285 6013 7157 2983 5565 1587 3136 6060 3286 8456
我先不把随机数调这么大  只要限定0到9的随机数即可,原来基础上把数字调小
源码
(import java.util.Random;
public class Test_02 {

        public static void main(String[] args) {
               
                            int[] arr = method();
                                for(int i = 0; i < arr.length; i++){
                                        System.out.print(arr[i]+" ");
                                }
                        }
                        public static int[] method(){
                                Random r = new Random();
                                int[] arr = new int[10];
                                int i = 0;
                                while(i < 10){
                                        int num = r.nextInt(10);
                                        for(int j = 0 ; j < arr.length; j++){
                                                if(num == arr[i]){
                                                        break;
                                                }
                                        }
                                        arr[i]=num;
                                        i++;
                                }
                                return arr;
                        }

})
输出结果:(0     7    6     3    1    0    3    7    1    1 )

然后自己想了很久  只能用笨方法来做  还望大神有更好的方法
源码如下:
(public class Test_01 {
        public static void main(String[] args) {
                Random r = new Random();
                int[] arr = new int[10];
                int temp = 0 ;
                int a = 0;
                for (int i = 0; i < 50; i++) {
                         temp = r.nextInt(10) ;
                         if(arr[0] != temp&&arr[0+1]!=temp && arr[0+2]!=temp&&arr[0+3]!=temp&&arr[0+4]!=temp&&arr[0+5]!=temp&&arr[0+6]!=temp&&arr[0+7]!=temp&&arr[0+8]!=temp&&arr[0+9]!=temp){
                                 arr[a]= temp;
                                 a++;
                                 if(a==9){
                                         break;
                                 }
                         }
                }
                bianli(arr);
               
        }
        public static void bianli(int[] arr){
                System.out.print("数组是:");
                for (int i = 0; i < arr.length; i++) {
                        System.out.print(arr[i]+" ");
                }
                System.out.println();
        }

}

输出结果:2      6      3       8       9         1       7        5         4       0

31 个回复

正序浏览
哈哈,我表示自己写代码很爽,如果看别人写的代码很痛苦,这道题不难,我讲下我的做法,最外层是个for循环,来填十个数,再内一层,用while循环,来判断随机生成的数和数组中不重复再进行填下一个数,如果重复就无线循环随机生成,再内层就是随机生成,其实思路有了就好说
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报

你删除试试
回复 使用道具 举报
郝永 发表于 2017-4-14 22:01
我发现这个变量i是不是没用?

这个变量i有用呀
回复 使用道具 举报
DreamBoyMrsLin 发表于 2017-4-12 23:35
public class Test03 {
        public static void main(String[] args) {
                Random r =  ...

我发现这个变量i是不是没用?
回复 使用道具 举报
楼主厉害了,赞一个!!!涨知识了!!!
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
郝永 发表于 2017-4-12 22:54
public class Test03 {
        public static void main(String[] args) {
                Random r = new Random();

public class Test03 {
        public static void main(String[] args) {
                Random r = new Random();
                ArrayList<Integer> list = new ArrayList<>();
                int i=0;
                while(list.size()<10){
                        int a = r.nextInt(9000)+1000;
                        if(!list.contains(a)){
                                list.add(a);
                                   i++;
                        }
                       
                }
                System.out.println(list);
        }
这样做也可以  可以省一句代码 这道题主要考的是思路
回复 使用道具 举报
郝永 发表于 2017-4-12 23:03
import java.util.ArrayList;
import java.util.Random;

你这样真的好吗?老同学  
回复 使用道具 举报

import java.util.ArrayList;
import java.util.Random;

/*
需求:1.返回一个存储10个4位数的随机整数 1000-9999的数组(注意思考怎么产生一个4位的随机整数)(不能重  复)
        2.在方法中遍历这个随机数数组    */
public class Test03 {
        public static void main(String[] args) {
                int [] arr = math();
                for (int i : arr) {
                        System.out.println(i);
                }
               
        }
        public static int [] math(){
        Random r = new Random();
        ArrayList<Integer> list = new ArrayList<>();
        int i=0;
        while(list.size()<10){
                int a = r.nextInt(9000)+1000;
                if(!list.contains(a)){
                        list.add(a);
                }else{
                        i--;
                }
                i++;
        }
        int [] arr = new int [10];
        for (int j = 0; j < list.size(); j++) {
                arr[j] = list.get(j);
        }
        return arr;

        }
}
这样应该更符合题意,其实我就想蹭点技术分
回复 使用道具 举报

public class Test03 {
        public static void main(String[] args) {
                Random r = new Random();
                ArrayList<Integer> list = new ArrayList<>();
                int i=0;
                while(list.size()<10){
                        int a = r.nextInt(9000)+1000;
                        if(!list.contains(a)){
                                list.add(a);
                        }else{
                                i--;
                        }
                        i++;
                }
                System.out.println(list);
        }

}看看,交流一下,是这么着吗?
回复 使用道具 举报
这是我写的可以看一下
[Java] 纯文本查看 复制代码
package homework;

import java.util.Random;

/*需求:1.返回一个存储10个4位数的随机整数 1000-9999的数组(注意思考怎么产生一个4位的随机整数)(不能重  复)
2.在方法中遍历这个随机数数组    */    
public class Test09 {
	public static void main(String[] args) {
		//定义一个数组
		int[] arr = new int[10];
		
		Random r = new Random();
		arr[0] = r.nextInt(9000) + 1000;
		for (int i = 1; i < arr.length; i++) {
			//遍历数组为每个元素赋值
			//定义一个标记是否前面出现过
			boolean flag = false;
			while (true) {
				arr[i] = r.nextInt(9000) + 1000;
				//遍历比i小的索引,判断是否有和arr[i]相同的元素
				for (int j = 0; j < i; j++) {
					if (arr[j] == arr[i]) {
						flag = true;
						break;
					}
				}
				if (!flag) {
					break;
				}
			}			
		}
		//遍历数组
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	}
}


回复 使用道具 举报
厉害了我的哥,老师的代码都找出错误了,老师可是月薪5w的
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
DreamBoyMrsLin 发表于 2017-3-27 00:25
谢谢


来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
newu 黑马帝 2017-3-27 07:31:20
20#
好帖,赞一个,顶楼主
回复 使用道具 举报
回复 使用道具 举报
javaeeheima 发表于 2017-3-27 00:09
(import java.util.Random;
public class Test_02 {

我也刚想到了  还可以用集合  和双重for循环和  一个while循环和for循环
回复 使用道具 举报
赞一个!
回复 使用道具 举报
(import java.util.Random;
public class Test_02 {

        public static void main(String[] args) {
               
                            int[] arr = method();
                                for(int i = 0; i < arr.length; i++){
                                        System.out.print(arr[i]+" ");
                                }
                        }
                        public static int[] method(){
                                Random r = new Random();
                                int[] arr = new int[10];
                                int i = 0;
                                while(i < 10){
                                        int num = r.nextInt(10);
boolean pd=true;
                                        for(int j = 0 ; j < arr.length; j++){
                                                if(num == arr[j]){
               pd=false;                                       
break;
                                                }
                                        }
if(pd=false){
continue;}
else{
                                        arr[i]=num;
                                        i++;
}
                                }
                                return arr;
                        }

})
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
(import java.util.Random;
public class Test_02 {

        public static void main(String[] args) {
               
                            int[] arr = method();
                                for(int i = 0; i < arr.length; i++){
                                        System.out.print(arr[i]+" ");
                                }
                        }
                        public static int[] method(){
                                Random r = new Random();
                                int[] arr = new int[10];
                                int i = 0;
                                while(i < 10){
                                        int num = r.nextInt(10);
boolean pd=true;
                                        for(int j = 0 ; j < arr.length; j++){
                                                if(num == arr[j]){
               pd=false;                                       
break;
                                                }
                                        }
if(pd=false){
break;}
else{
                                        arr[i]=num;
                                        i++;
}
                                }
                                return arr;
                        }

})

来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
想到了   是集合  
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马