兄弟们,有个题目帮个小忙 JAVA刚刚起步,遇到了一个题目:随即产生10个1-100内的整数,然后从大到小排序。帮我说一下思路(尽量说的详细些,如用到哪个函数),着急等。呵呵非常感谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用Random类的nextInt(99)产生0~99之间的随机数,不含99.结果加1就是1~100之同内的随机数了.从大到小排序可以自己写一个算法。如果用现成的方法,可以用Arrays.sort(integerArray,Collections.reverseOrder());其中integerArray是你要排序的数组,数组的内容是Integer的,所以要你把int类型数组,转为Integer数组,结果还要到转回到int. 从大到小的选择排序思路:从i~array.length-1中选最大的元素和i交换。i从0到array.length-2循环就可以了。for(int i=0;i<array.length-1;i++){ max=i;//假设从i~array.length-1中最大的数的下标是i; for(int j=i+1;j<array.length;j++){ if(array[j]>array[max]){ //找到了比array[max]还要大的数。 max=j; } } 交换array[i]和array[max]} 这个前不久用.net写过。random就OK最后你稍微拓展下,新手嘛 要多钻的。。 1.Random ran =new Random();ran.nextInt(数值)+12.Math.random(); import java.util.Random;public class Test3{ static void sort(int[] arr){ // 从此一个位开始循环数组 for(int i=0;i<arr.length;i++){ // 从第i+1为开始循环数组 for(int j=i+1;j<arr.length;j++){ // 如果前一位比后一位小,那么就将两个数字调换 // 这里是按降序排列 // 如果你想按升序排列只要改变符号即可 if(arr[i] < arr[j]){ int tem = arr[i]; arr[i] = arr[j]; arr[j] = tem; } } } } public static void main(String[] args){ int arr[] = new int[11]; Random r=new Random(); for(int i=0;i<10;i++){ arr[i]=r.nextInt(100)+1;//得到10个100以内的整数 } sort(arr); for(int i=0;i<arr.length;i++){ System.out.println(arr[i]); } }} 哈哈,谢谢大家啊,11楼还给了源代码?谢谢。看API无从下手啊~~~~~~~~~~之前我知道两点:1是用Random 2是用sort现成的方法。但具体怎么用就蒙了 哥们,看API无从下手也得看啊! public class Test { public static void main(String args[]) { Random rand=new Random(); Integer[] a=new Integer[10]; for(int i=0;i<10;i++){ a[i]=rand.nextInt(99)+1; } //方法一 /*Arrays.sort(a); for(int i=a.length-1;i>=0;i--){ System.out.print(a[i]); if(i>0){ System.out.print(","); } }*/ //方法二 Arrays.sort(a,new Comparator<Integer>(){ public int compare(Integer o1, Integer o2) { return o1.intValue()>o2.intValue()?-1:(o1.intValue()<o2.intValue()?1:0); }}); System.out.println(Arrays.toString(a)); }} 顶楼上:import java.util.*;public class Headache { public static void main(String args[]) { Random rand=new Random(); Integer[] a=new Integer[10]; for(int i=0;i<10;i++){ a[i]=rand.nextInt(99)+1; } System.out.println("排序之前:"); System.out.println(Arrays.toString(a)); //方法一 /*Arrays.sort(a); for(int i=a.length-1;i>=0;i--){ System.out.print(a[i]); if(i>0){ System.out.print(","); } }*/ //方法二 /*Arrays.sort(a,new Comparator<Integer>(){ public int compare(Integer o1, Integer o2) { return o1.intValue()>o2.intValue()?-1:(o1.intValue()<o2.intValue()?1:0); }}); */ //方法三: Arrays.sort(a,Collections.reverseOrder()); System.out.println("排序之后:"); System.out.println(Arrays.toString(a)); }} 我怎么记得,Collections.reverseOrder()不能排序基本数据?记错了? import java.util.*;public class Headache { public static void main(String args[]) { Random rand=new Random(); Integer[] a=new Integer[10]; for(int i=0;i<10;i++){ a[i]=rand.nextInt(99)+1; } System.out.println("排序之前:"); System.out.println(Arrays.toString(a)); //方法零: Arrays.sort(a); List<Integer> myList=Arrays.<Integer>asList(a); Collections.reverse(myList); System.out.println(myList); //方法一 /*Arrays.sort(a); for(int i=a.length-1;i>=0;i--){ System.out.print(a[i]); if(i>0){ System.out.print(","); } }*/ //方法二 /*Arrays.sort(a,new Comparator<Integer>(){ public int compare(Integer o1, Integer o2) { return o1.intValue()>o2.intValue()?-1:(o1.intValue()<o2.intValue()?1:0); }}); */ //方法三: //Arrays.sort(a,Collections.reverseOrder()); System.out.println("排序之后:"); System.out.println(Arrays.toString(a)); }} Collections.reverse(myList);//这个还能把a也reverse了?奇也怪哉! 光顾抄人家的代码了,原来a是Integer[]啊.但List<Integer> myList=Arrays.<Integer>asList(a);Collections.reverse(myList);System.out.println(myList);这时a也反转了.说明一个问题,数组和对应的List实际上是同一个东西的不同形式.这样解释对吗? 烂货,老师都白交你了,下次老师就教你们怎么到csdn上找答案,就行了。 怎么编写程序来查U盘空间是否大于100M? 为什么说对象传输于网络必须进行序列化? 急!!the method getTextContent() is undefined for the type Element 下载网页到指定文件夹。。。。怎样实现啊。。。。? 问几个很简单的问题 高手来说说关键字——synchronized 大家快来看看,这是不是rmi的问题??? 以下是我做SCJP的几道模拟题及答案,但我还有些不懂的地方想请教 哪种方法效率高? 各位Java大侠救命!Base64编码如何做? 布署到jboss4.2出错 sql语句中的迭代插入
从i~array.length-1中选最大的元素和i交换。i从0到array.length-2循环就可以了。for(int i=0;i<array.length-1;i++){
max=i;//假设从i~array.length-1中最大的数的下标是i;
for(int j=i+1;j<array.length;j++){
if(array[j]>array[max]){ //找到了比array[max]还要大的数。
max=j;
}
}
交换array[i]和array[max]}
2.Math.random();
import java.util.Random;public class Test3{
static void sort(int[] arr){
// 从此一个位开始循环数组
for(int i=0;i<arr.length;i++){
// 从第i+1为开始循环数组
for(int j=i+1;j<arr.length;j++){
// 如果前一位比后一位小,那么就将两个数字调换
// 这里是按降序排列
// 如果你想按升序排列只要改变符号即可
if(arr[i] < arr[j]){
int tem = arr[i];
arr[i] = arr[j];
arr[j] = tem;
}
}
}
}
public static void main(String[] args){
int arr[] = new int[11];
Random r=new Random();
for(int i=0;i<10;i++){
arr[i]=r.nextInt(100)+1;//得到10个100以内的整数
} sort(arr);
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
之前我知道两点:1是用Random 2是用sort现成的方法。但具体怎么用就蒙了
public class Test {
public static void main(String args[]) {
Random rand=new Random();
Integer[] a=new Integer[10];
for(int i=0;i<10;i++){
a[i]=rand.nextInt(99)+1;
}
//方法一
/*Arrays.sort(a);
for(int i=a.length-1;i>=0;i--){
System.out.print(a[i]);
if(i>0){
System.out.print(",");
}
}*/
//方法二
Arrays.sort(a,new Comparator<Integer>(){
public int compare(Integer o1, Integer o2) {
return o1.intValue()>o2.intValue()?-1:(o1.intValue()<o2.intValue()?1:0);
}});
System.out.println(Arrays.toString(a));
}
}
public static void main(String args[]) {
Random rand=new Random();
Integer[] a=new Integer[10];
for(int i=0;i<10;i++){
a[i]=rand.nextInt(99)+1;
}
System.out.println("排序之前:");
System.out.println(Arrays.toString(a));
//方法一
/*Arrays.sort(a);
for(int i=a.length-1;i>=0;i--){
System.out.print(a[i]);
if(i>0){
System.out.print(",");
}
}*/
//方法二
/*Arrays.sort(a,new Comparator<Integer>(){
public int compare(Integer o1, Integer o2) {
return o1.intValue()>o2.intValue()?-1:(o1.intValue()<o2.intValue()?1:0);
}});
*/
//方法三:
Arrays.sort(a,Collections.reverseOrder());
System.out.println("排序之后:");
System.out.println(Arrays.toString(a));
}
}
public static void main(String args[]) {
Random rand=new Random();
Integer[] a=new Integer[10];
for(int i=0;i<10;i++){
a[i]=rand.nextInt(99)+1;
}
System.out.println("排序之前:");
System.out.println(Arrays.toString(a));
//方法零:
Arrays.sort(a);
List<Integer> myList=Arrays.<Integer>asList(a);
Collections.reverse(myList);
System.out.println(myList);
//方法一
/*Arrays.sort(a);
for(int i=a.length-1;i>=0;i--){
System.out.print(a[i]);
if(i>0){
System.out.print(",");
}
}*/
//方法二
/*Arrays.sort(a,new Comparator<Integer>(){
public int compare(Integer o1, Integer o2) {
return o1.intValue()>o2.intValue()?-1:(o1.intValue()<o2.intValue()?1:0);
}});
*/
//方法三:
//Arrays.sort(a,Collections.reverseOrder());
System.out.println("排序之后:");
System.out.println(Arrays.toString(a));
}
}
List<Integer> myList=Arrays.<Integer>asList(a);
Collections.reverse(myList);
System.out.println(myList);
这时a也反转了.说明一个问题,数组和对应的List实际上是同一个东西的不同形式.这样解释对吗?