求个小小的部分编程
java吧
全部回复
仅看楼主
level 1
请大佬帮忙下,我想写段语言,随机在1--100产生10个数,每个数值不能一样,一共20组数。请大佬们费心啦[怒]我自己试了下,有些问题。只能看大佬们是怎么写的了,来学习了。
2017年11月24日 05点11分 1
level 7
有问题说问题,伸手党不给
2017年11月24日 05点11分 2
import java.util.*; public class tiyucaipiao { public static void main(String [] args){ int arr1[][]=new int[20][10]; Random x=new Random(); int x1=x.nextInt(100)+1; for(int i=0;i<20;i++){ for(int j=0;j<10;j++){ arr1[i][j]=x1; } } System.out.print(arr1+"\t"); } }
2017年11月24日 06点11分
level 7
你先把自己的问题贴出来吧
2017年11月24日 05点11分 3
大佬 为啥我跳出来 是乱码
2017年11月24日 06点11分
@wangtianshi125 这个应该是二维数组吧,这样输出得到的是引用地址,得不到你的随机数结果的,需要遍历输出,而且随机数x1没在循环类,所以你只能循环输出同一个随机数200遍
2017年11月24日 06点11分
@wangtianshi125 int arr1[][]=new int[20][10]; Random x=new Random(); for(int i=0;i<20;i++){ for(int j=0;j<10;j++){ int x1=x.nextInt(100)+1; arr1[i][j]=x1; System.out.println(arr1[i][j]); } System.out.println(".........."); }
2017年11月24日 06点11分
回复
紫杨1y
:是了,大佬就是不一样啊。大佬,我再麻烦下,随机生成的数组中有同样的值,怎么判断有同样的值这组数不显示,重新运算,还是生成20组数呀?哪个用while能行吗?
2017年11月24日 06点11分
level 1
import java.util.*;
public class tiyucaipiao {
public static void main(String [] args){
int arr1[][]=new int[20][10];
Random x=new Random();
int x1=x.nextInt(100)+1;
for(int i=0;i<20;i++){
for(int j=0;j<10;j++){
arr1[i][j]=x1;
}
}
System.out.print(arr1);
}
}
2017年11月24日 06点11分 4
int x1=x.nextInt(100)+1;都不在循环里的, 那不是都一样了吗
2017年11月24日 06点11分
@miaoch👀 把这个加到for(int j=0;j<10;j++){ 后面吗?也不对呀
2017年11月24日 06点11分
@wangtianshi125 不对起码逻辑对了,只不过是有重复。所以得换一套算法。我给你一个思路,你先初始化一个容量为n的数组(值与下标相同),然后打乱这个数组,再任意获得m个,就是不重复的随机m个数了
2017年11月24日 06点11分
@wangtianshi125 额,我重新看了看你的代码,你是不会打印吧。。[][]二维数组可没有重写的toString()方法。你得像赋值那个一个一个打印出来[汗]
2017年11月24日 06点11分
level 7
public int[][] generateRandom() { int[][] ret = new int[10][20];
int[] used = new int[100];
Random r = new Random();
for(int i = 0; i < ret.length; i++) {
for(int j = 0; j < ret[0].length; j++) {
int value;
while(true) {
value = r.nextInt();
if(used[value] == 0) {
used[value] = 1;
break;
}
}
ret[i][j] = value;
}
}
return ret;
}
2017年11月24日 06点11分 5
大佬,真给力[酷]!
2017年11月24日 06点11分
@wangtianshi125 新手,不是很懂,大佬。正在研究
2017年11月24日 07点11分
level 8
2017年11月24日 06点11分 6
level 8
不知道上面的例子链接会不会被和谐
2017年11月24日 06点11分 7
能用,谢谢
2017年11月24日 06点11分
level 12
package test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class Test {
public static void main(String[] args) {
List<Integer> integerList = IntStream.rangeClosed(1, 100)
.boxed()
.collect(Collectors.toList());
List<List<Integer>> list = Stream.generate(() -> {
Collections.shuffle(integerList);
return integerList.stream().limit(10).collect(Collectors.toList());
})
.limit(20)
.collect(Collectors.toList());
System.out.println(list);
}
}
2017年11月24日 06点11分 8
大佬,你这个略微有点复杂啊
2017年11月24日 06点11分
其实道理很简单,就是1到100的数组打乱顺序,然后取出来它的前十个20次。只不过java的表达能力比较差,看起来才有点乱
2017年11月24日 06点11分
你也可以按照我的思路自己去写一下,如果不用java8的写法,写起来更长
2017年11月24日 07点11分
@孢子真好玩 大佬,帮我看下下面的冒泡排序怎么不对呀?无法运行。
2017年11月24日 07点11分
level 1
哇,好多热心的朋友啊。谢谢大家。我会努力的。
2017年11月24日 06点11分 9
level 1
import java.util.*;
public class tiyu {
public static void main(String [] args){
int arr1[][]=new int[5][7];
Random x=new Random();
for(int i=0;i<5;i++){
System.out.println();
for(int j=0;j<7;j++){
int x1=x.nextInt(35)+1;
arr1[i][j]=x1;
System.out.print(arr1[i][j]+"\t");
}
}
for(int i=0;i<5;i++){
System.out.println();
for(int j=0;j<7;j++){
if(arr1[i][j]>arr1[i][j+1]){
int tem=arr1[i][j];
arr1[i][j]=arr1[i][j+1];
arr1[i][j+1]=tem;
System.out.print(arr1[i][j]+"\t");
}
}
}
}
}
大佬们,后面的冒泡排序怎么不能运行呀?
2017年11月24日 07点11分 10
level 2
二维数组你想双层循环就能冒泡?
2017年11月24日 08点11分 11
level 2
public static void main(String[] args) {
int[][] arr1=new int[5][7];
Random x=new Random();
for(int i=0;i<arr1.length;i++){
for(int j=0;j<arr1[i].length;j++){
arr1[i][j]=x.nextInt(35)+1;
}
}
System.out.println("排序前:");
for(int i=0;i<arr1.length;i++){
for(int j=0;j<arr1[i].length;j++){
System.out.print(arr1[i][j]+"\t");
}
System.out.println();
}
for(int i=0;i<arr1.length;i++){
for(int k=0;k<arr1[i].length;k++){
for(int j=0;j<arr1[i].length-k-1;j++){
if(arr1[i][j]>arr1[i][j+1]){
int c=arr1[i][j];
arr1[i][j]=arr1[i][j+1];
arr1[i][j+1]=c;
}
}
}
}
System.out.println("排序后");
for(int i=0;i<arr1.length;i++){
for(int j=0;j<arr1[i].length;j++){
System.out.print(arr1[i][j]+"\t");
}
System.out.println();
}
}
2017年11月24日 08点11分 12
大佬,谢谢。你是怎么学习的?是在学校还是自学啊?有什么资料能让小弟我借鉴下吗?我现在主要是在51自学网学的
2017年11月24日 09点11分
还是我的逻辑思维不够严谨啊?!?!?!
2017年11月24日 09点11分
网上数组for循环这块的题特别多还都有答案 大概一星期你就能做到吐,然后后面你基本也就能看懂别人这块的错误了,就可以去装B了
2017年11月24日 12点11分
@averagr 多谢大佬[太开心]
2017年11月24日 15点11分
1