java随机数排序的问题
publicclassRN{publicstaticvoidmain(String[]args){System.out.println("初始的随机数是:");inti=...
public class RN {
public static void main(String[] args) {
System.out.println("初始的随机数是:");
int i = 0;
int j = 0;
int[] num = new int[10];
for(i = 0;i < num.length;i++) {
num[i] = (int) (Math.random()*1000);
System.out.println("num[" + i +"]" + num[i]);
}
System.out.println("排序后的随机数是:");
for(i = 0;i < num.length;i++) {
for(j = 0;j < num.length;j++) {
if(num[i] < num[j]) {
int m = num[j];
num[j] = num[i];
num[i] = m;
}
}
}
for(i = 0;i < num.length;i++) {
System.out.println("num[" + i +"]" + num[i]);
}
}
}
我想要结果如下:
初始的随机数是:
num[0]4
num[1]982
num[2]344
num[3]93
num[4]77
num[5]419
num[6]839
num[7]414
num[8]452
num[9]453
排序后的随机数是:
num[0]4
num[4]77
num[3]93
num[2]344
num[7]414
num[5]419
num[8]452
num[9]453
num[6]839
num[1]982
该怎么修改?
正解:
public class RN {
public static void main(String[] args) {
System.out.println("初始的随机数是:");
int i = 0;
int j = 0;
int a = 0;
int[] num = new int[10];
int[] num2 = new int[10];
for(i = 0;i < num.length;i++) {
num[i] = (int) (Math.random()*1000);
num2[i] = i;
System.out.println("num[" + i +"]" + num[i]);
}
System.out.println("排序后的随机数是:");
for(i = 0;i < num.length;i++) {
for(j = 0;j < num.length;j++) {
if(num[i] < num[j]) {
int m = num[j];
num[j] = num[i];
num[i] = m;
int n = num2[j];
num2[j] = num2[i];
num2[i] = n;
}
}
}
for(a = 0;a < num.length;a++) {
System.out.println("num[" + num2[a] +"]" + num[a]);
}
}
}
谢谢大家了!!!! 展开
public static void main(String[] args) {
System.out.println("初始的随机数是:");
int i = 0;
int j = 0;
int[] num = new int[10];
for(i = 0;i < num.length;i++) {
num[i] = (int) (Math.random()*1000);
System.out.println("num[" + i +"]" + num[i]);
}
System.out.println("排序后的随机数是:");
for(i = 0;i < num.length;i++) {
for(j = 0;j < num.length;j++) {
if(num[i] < num[j]) {
int m = num[j];
num[j] = num[i];
num[i] = m;
}
}
}
for(i = 0;i < num.length;i++) {
System.out.println("num[" + i +"]" + num[i]);
}
}
}
我想要结果如下:
初始的随机数是:
num[0]4
num[1]982
num[2]344
num[3]93
num[4]77
num[5]419
num[6]839
num[7]414
num[8]452
num[9]453
排序后的随机数是:
num[0]4
num[4]77
num[3]93
num[2]344
num[7]414
num[5]419
num[8]452
num[9]453
num[6]839
num[1]982
该怎么修改?
正解:
public class RN {
public static void main(String[] args) {
System.out.println("初始的随机数是:");
int i = 0;
int j = 0;
int a = 0;
int[] num = new int[10];
int[] num2 = new int[10];
for(i = 0;i < num.length;i++) {
num[i] = (int) (Math.random()*1000);
num2[i] = i;
System.out.println("num[" + i +"]" + num[i]);
}
System.out.println("排序后的随机数是:");
for(i = 0;i < num.length;i++) {
for(j = 0;j < num.length;j++) {
if(num[i] < num[j]) {
int m = num[j];
num[j] = num[i];
num[i] = m;
int n = num2[j];
num2[j] = num2[i];
num2[i] = n;
}
}
}
for(a = 0;a < num.length;a++) {
System.out.println("num[" + num2[a] +"]" + num[a]);
}
}
}
谢谢大家了!!!! 展开
展开全部
你是循环遍历出数组的,那坑定是num[1].......num[n]啊,请使用数组的随机遍历方式
在开始遍历数组时加入 一下代码。
import java.util.Random;
import java.util.Vector;
public class test{
/**
* @param args
*/
public static void main(String[] args) {
String[] strs = { "a", "b", "c", "d"};
int strsLength = strs.length;
Vector<Integer> v = new Vector<Integer>();
Random r = new Random();
boolean flag = true;
while (flag) {
int i = r.nextInt(strsLength);
if (!v.contains(i))
v.add(i);
if (v.size() == strsLength)
flag = false;
}
for (int i = 0; i < strsLength; i++) {
System.out.println(strs[v.get(i)]);
}
}
}
在开始遍历数组时加入 一下代码。
import java.util.Random;
import java.util.Vector;
public class test{
/**
* @param args
*/
public static void main(String[] args) {
String[] strs = { "a", "b", "c", "d"};
int strsLength = strs.length;
Vector<Integer> v = new Vector<Integer>();
Random r = new Random();
boolean flag = true;
while (flag) {
int i = r.nextInt(strsLength);
if (!v.contains(i))
v.add(i);
if (v.size() == strsLength)
flag = false;
}
for (int i = 0; i < strsLength; i++) {
System.out.println(strs[v.get(i)]);
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已经实现了,不过是一个降序的。把双重循环中的 if(num[i] < num[j])
改一下就行,把<改成>就是升序的了。
改一下就行,把<改成>就是升序的了。
更多追问追答
追问
我不是想要降序,就是想让 随机数 前面的数组标记跟着 随机数 动
追答
你这里就是一个冒泡排序啊,数组已经重新排序了,按的是你写的那样的,不过是反过来的,从大到小。改一下判断就是你想要的效果了。
-------------------------------------------------------------------------------------
那你先解释清楚你想要什么效果先,用语言说清楚。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class RN {
public static void main(String[] args) {
System.out.println("初始的随机数是:");
int i = 0;
int j = 0;
int[] num = new int[10];
for(i = 0;i < num.length;i++) {
num[i] = (int) (Math.random()*1000);
System.out.println("num[" + i +"]" + num[i]);
}
System.out.println("排序后的随机数是:");
for(i = 0;i < num.length;i++) {
for(j = 0;j < i;j++) {//主要是这里,不是j < num.length,应该是j < i
if(num[i] < num[j]) {
int m = num[j];
num[j] = num[i];
num[i] = m;
}
}
}
for(i = 0;i < num.length;i++) {
System.out.println("num[" + i +"]" + num[i]);
}
}
}
public static void main(String[] args) {
System.out.println("初始的随机数是:");
int i = 0;
int j = 0;
int[] num = new int[10];
for(i = 0;i < num.length;i++) {
num[i] = (int) (Math.random()*1000);
System.out.println("num[" + i +"]" + num[i]);
}
System.out.println("排序后的随机数是:");
for(i = 0;i < num.length;i++) {
for(j = 0;j < i;j++) {//主要是这里,不是j < num.length,应该是j < i
if(num[i] < num[j]) {
int m = num[j];
num[j] = num[i];
num[i] = m;
}
}
}
for(i = 0;i < num.length;i++) {
System.out.println("num[" + i +"]" + num[i]);
}
}
}
追问
System.out.println("排序后的随机数是:");
for(i = 0;i < num.length;i++) {
for(j = 0;j < num.length;j++) {
if(num[i] < num[j]) {
int m = num[j];
num[j] = num[i];
num[i] = m;
int n = num2[j];
num2[j] = num2[i];
num2[i] = n;
}
}
}
for(a = 0;a < num.length;a++) {
System.out.println("num[" + num2[a] +"]" + num[a]);
}
}
}
搞定~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你能不能先说说你这个程序现在离你的要求还差什么?
追问
现在的结果是:
初始的随机数是:
num[0]4
num[1]982
num[2]344
num[3]93
num[4]77
num[5]419
num[6]839
num[7]414
num[8]452
num[9]453
排序后的随机数是:
num[0]4
num[1]77
num[2]93
num[3]344
num[4]414
num[5]419
num[6]452
num[7]453
num[8]839
num[9]982
追答
ok明白,试试这个
public static void main(String[] args) {
System.out.println("初始的随机数是:");
int i = 0;
int j = 0;
int[] num = new int[10];
String[] snum = new String[10];
for(i = 0;i < num.length;i++) {
num[i] = (int) (Math.random()*1000);
snum[i]=num[i]+"in"+i;
System.out.println("num[" + i +"]" + num[i]);
}
System.out.println("排序后的随机数是:");
for(i = 0;i < num.length;i++) {
for(j = 0;j < num.length;j++) {
if(num[i] < num[j]) {
int m = num[j];
num[j] = num[i];
num[i] = m;
}
}
}
for(i = 0;i < num.length;i++) {
for(j = 0;j < snum.length;j++){
if(snum[j].contains(num[i]+"in")){
System.out.println("num[" + j +"]" + num[i]);
break;
}
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询