首页 > 试题广场 >

随机生成20个不重复的小写字母并进行排序,排序方式为倒序。

[问答题]
随机生成20个不重复的小写字母并进行排序,排序方式为倒序。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
Random random = new Random();
        ArrayList<Integer> list = new ArrayList<>();
        int i = 0;
        while(i<20) {
            int temp = random.nextInt(26) +97;
            if (!list.contains(temp)) {
                i++;
                list.add(temp);
            }
        }
        Collections.sort(list);
        Collections.reverse(list);
        for(Integer value : list){
            System.out.println((char)((int)value));
        }

发表于 2017-11-25 21:08:03 回复(0)
更多回答
package Test;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;


/**
 * 
 * @author hhj
 *
 */
public class RandomNum {

    public static void main(String[] args) {
        
        //保存0到26
        List<Integer> cl = new LinkedList<>();
        for (int i = 0; i < 26; i++) {
            cl.add(i);
        }
        
        Random r = new Random();
        
        //20个随机数
        int sum = 20;
        char[] result = new char[sum];
        
        //生成20个随机数
        for (int i = 0; i < sum; i++) {
            int index = r.nextInt(cl.size());
            result[i] = (char)((int)cl.get(index)+97);
            //直接删除掉已经存在的
            cl.remove(index);
        }
        
        //转为正序
        Arrays.sort(result);
        
        //转逆序
        for (int i = 0; i < result.length/2; i++) {
            char temp = result[i];
            result[i] = result[result.length-1-i];
            result[result.length-1-i] = temp;
        }
        
        //打印输出
        for (int i = 0; i < result.length; i++) {
            System.out.println(result[i]);
        }
    }

}


发表于 2017-09-13 17:22:31 回复(0)
import java.util.*;
public class Test{
    public static void main(String[] args){
        Random r = new Random();
        List<Integer> ls = new LinkedList<>();
        for(int i=0;i<20;i++){
            int randomNum = r.nextInt(122)%26 + 97;//随机生成a-z小写字母的ASCII码
            if(ls.contains(randomNum)){
                i--;
                continue;
            }
            ls.add(randomNum);
        }
       Collections.sort(ls);//排序
       Collections.reverse(ls);//翻转倒序
        for(Integer i:ls){
             System.out.print((char)(int)i+" ");//打印出结果
          
        }
        System.out.println();
    }
}

编辑于 2017-09-08 16:10:58 回复(6)
package yy.random20char;

import java.util.Comparator;
import java.util.Random;
import java.util.Set;
import java.util.TreeSet;

public class Random20Char {

    static Character getRandomChar() {
        Random random = new Random();
        return (char) ('a' + random.nextInt(26));
    }

    public static void main(String[] args) {
        Set<Character> chars = new TreeSet<>(new Comparator<Character>() {
            @Override
            public int compare(Character o1, Character o2) {
                if (o1 > o2) {
                    return -1;
                } else if (o1 < o2) {
                    return 1;
                }
                return 0;
            }
        });
        while (chars.size() < 20) {
            chars.add(getRandomChar());
        }
        System.out.println(chars);
    }
}

发表于 2018-02-28 14:40:55 回复(0)
1、建立一个长度为26的数组,将小写字母进行标号,0~25分别表示a~z
2、通过random()*25,随机产生20个数,将数组中对应编号的数+1
3、循环输出数组,并将int类型转为char类型即可。
public String outPutString(){
  int a[] = new int[26];
  int i= 0;
  int j = 0;
  while(i<20){
     j = random()*25;
     if(a[j]==0){
       i++;
       a[j]++;
     }
  }
  String r = "";
  for(int i = 0;i<26;i++)
    r += (char)(i);
  return r;
}

编辑于 2017-09-25 12:21:14 回复(2)
import java.util.*;
class Main{
    publicstaticvoidmain(String[] args){
        List list=newArrayList<Object>();
        String chars="abcdefghijklmnopqrstuvwxyz";
        while(list.size()!=20){
            charc=chars.charAt((int)(Math.random()*26));
            if(list.contains(c)==false){
                list.add(c);
            }
        }
        Collections.sort(list);
        Collections.reverse(list);
        for(Object o:list) {
            System.out.print(o);
        }
    }
}
发表于 2020-08-27 16:39:31 回复(0)
//定义一个数组char[] ch =new char[20], ch = {};
// 使用mathdom 随机生成<20以内的数字
//根据生成的数字 添加到一个新的数组中,这个时候需要判断数组中是否办好了新生成的字母 有舍弃 没有添加
//最终使用Array.sort()排序 然后从高到底输出数据
import java.util.ArrayList;
import java.util.Collections;

public class Test13 {
    public static void main(String[] args) {
        String str = "abcdefghijklmnopqrstuvwxyz";
        char[] ch = str.toCharArray();
        StringBuilder sb = new StringBuilder();
        //随机生成20个字母
        while(true) {
            int number = (int)(Math.random()*30);
            if(number<26) {
                char c = ch[number];
                if(sb==null) {
                    sb.append(ch[number]);
                }else if(sb.toString().indexOf(c)==-1){
                    sb.append(ch[number]);
                }
            }
            if(sb.length()==20) {
                break;
            }
        }
        //显示结果
        System.out.println(sb.toString());
        //排序
        ArrayList<Character> list=new ArrayList<>();
        char[] c=sb.toString().toCharArray();
        for (int i = 0; i < sb.toString().length(); i++) {
            list.add(c[i]);
        }
        Collections.sort(list);
        //打印排序后的输出结果
        StringBuilder s=new StringBuilder(list.size());
        for (int i = 0; i < list.size(); i++) {
            s.append(list.get(i));
        }
        System.out.println(s.toString());

    }
}
发表于 2018-09-01 11:46:32 回复(0)
package cn.edu.jxnu.practice;

import java.util.Comparator;
import java.util.Random;
import java.util.Set;
import java.util.TreeSet;

/**
 * @description 随机生成20个不重复的小写字母并进行排序,排序方式为倒序。 97~122
 * @author Mr.Li
 *
 */
public class Main {

    public static void main(String[] args) {
        Set<Character> set = new TreeSet<Character>(new MyComparator());
        while (set.size() < (char) 20) {
            int a = new Random().nextInt(26) + 97;
            set.add((char) a);
        }
        for (char c : set) {
            System.out.print(c);
        }

    }

}

class MyComparator implements Comparator<Character> {

    @Override
    public int compare(Character o1, Character o2) {
        if (o1 > o2)
            return -1;
        else if (o1 < o2) {
            return 1;
        } else {
            return 0;
        }
    }

}

发表于 2018-02-25 21:56:39 回复(0)
//偷懒使用treeset
public void test(){
        TreeSet<Character> set=new TreeSet<Character>();
        Random random=new Random();
        while(set.size()!=20){//生成20个不重复的字母
            Character c=(char) (random.nextInt(26)+97);
            set.add(c);
        }
        Character[] array = set.toArray(new Character[20] );
        for(int i=array.length-1;i>=0;i--){//逆序输出
            System.out.print(array[i]+",");
        }
}
发表于 2017-10-24 22:28:53 回复(0)
public static void main(String[] args) {
        char c[] = new char[26];
        Random random = new Random();
        int count = 0;
        while (true) {
            int i = random.nextInt(26);
            if (c[i] == '\u0000') {
                c[i] = (char) (i + 97);
                count++;
            }
            if (count == 20) {
                break;
            }
        }
        for (char ca : c) {
            if (ca != '\u0000') {
                System.out.print(ca + " ");
            }
        }
    }

发表于 2017-10-11 15:42:21 回复(0)
import java.util.*;  public class Main{ public static void main(String[] args){
        Main.RandomNum();  } public static void RandomNum(){
        List<Integer> list = new LinkedList<>();  for (int i = 0; i < 20; i++) {
            String chars = "abcdefghijklmnopqrstuvwxyz";  int randomNum = chars.charAt((int)(Math.random() * 26));  if (list.contains(randomNum)){
                i--;  continue;    }
            list.add(randomNum);  }  //        Collections.sort(list);    Collections.reverse(list);   for (int i:list) {
            System.out.print((char)i+" ");    }
    }

}



编辑于 2017-10-10 20:58:26 回复(0)
package demo_niukewang;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Random;
public class shuti {

public static void main(String[] args) {     // TODO Auto-generated method stub     ArrayList<Character> aList=new ArrayList<Character>();     int max=122;     int min=97;     Random random = new Random();          for(int i=0;i<=20;i++) {     int s = random.nextInt(max)%(max-min+1) + min;;//生成一定范围内的随机数     aList.add((char) s);     }     Collections.sort(aList);     Collections.reverse(aList);     System.out.print(aList);     }

}

发表于 2017-10-08 20:53:59 回复(0)
import java.util.*;
public class Main{
    public static void getLowerSequence(){
        TreeSet<Character> set=new TreeSet<>(new Comparator<Character>(){
            @Override
            public int compare(Character o1, Character o2) {
                return o2-o1;
            }
        });
        while(set.size() < 20){
            set.add(getRandomLowerChar());
        }
        Iterator<Character> iter=set.iterator();
        while(iter.hasNext()){
            System.out.print(iter.next());
        }
    }
     public static void main(String[] args) {
        getLowerSequence();
    }
    private  static char getRandomLowerChar(){
        int ch=(int)(Math.random()*26)+97;
        return (char)ch;
    }
}
编辑于 2017-09-27 15:48:08 回复(0)
不会
发表于 2017-09-25 12:46:01 回复(0)
    public static void main(String[] args) {
        Random random = new Random();
        TreeSet<Character> set = new TreeSet<Character>(new Comparator<Character>() {

            @Override
            public int compare(Character o1, Character o2) {
                if(o1>o2)
                    return -1;
                else if(o1<o2)
                    return 1;
                return 0;
            }
        });
        while(set.size()<20){
            set.add((char) (random.nextInt(26)+'a'));
        }
        for(char c : set){
            System.out.print(c+" ");
        }
    }

编辑于 2017-09-23 17:03:22 回复(0)
public class Test {
public static void main(String[] args) {
int []a=new int[256];
int []c=new int[20];
Set s=new HashSet<Integer>();
int mid;
while(s.size()<=20){
mid=(int)(25*Math.random());
s.add(mid);
a[mid+97]++;
}
for(int i=255;i>=0;i--){
if(a[i]!=0){
System.out.print((char)i);
}
}
}
}

发表于 2017-09-15 19:16:28 回复(0)
	public static void function4(){
		int begin = 'a';
		int end = 'z';
		ArrayList<Integer> list = new ArrayList<Integer>();
		for (int j = begin; j <= end; j++) {
			list.add(j);
		}
		Collections.shuffle(list);
		ArrayList<Integer> newList = new ArrayList<Integer>();
		for (int i = 0; i < 20; i++) {
			newList.add(list.get(i));
		}
		Collections.sort(newList);
		ArrayList<Character> charList = new ArrayList<>();
		for (int i = 0; i < newList.size(); i++) {
			int j = newList.get(newList.size() - i -1);
			charList.add((char)j);
		}
		System.out.println(charList);
	}

发表于 2017-09-14 15:17:18 回复(0)
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
import java.util.Stack;

public class Main{
public static char[] charSet=new char[20];
public static void main(String[] args) {
creatCharSet(charSet);
System.out.println(Arrays.toString(charSet));
reverseCharSet(charSet);
System.out.println(Arrays.toString(charSet));
}
public static void creatCharSet(char[] charSet) {
Random random=new Random();
ArrayList<Integer> count= new ArrayList<>();
for(int i=0;i<26;i++) {
count.add(i);
}
for (int i = 0; i < charSet.length; i++) {
int num = random.nextInt(count.size());
int out=count.remove(num).intValue();
charSet[i]=(char)(out+97);
}
  }
public static void reverseCharSet(char[] charSet) {
Stack<Character> stack=new Stack<>();
for (char c : charSet) {
stack.push(c);
}
int i=0;
while (!stack.isEmpty()) {
charSet[i]=stack.pop();
i++;
}
}
}
发表于 2017-09-13 17:49:03 回复(0)
import java.util.Arrays;

public class Rand {
    
    public static void main(String[] args){
        
        char[] arr=new char[20] ;
        char temp;
        
        for(int i=0;i<20;i++){
            temp=(char) ((int)(Math.random() * 26)+97);
            for(int j=0;j<i;j++){
                if(arr[j]==temp){
                    temp=(char) ((int)(Math.random() * 26)+97);
                    j=0;
                }    
            }
            arr[i]=temp;
        }
        Arrays.sort(arr);
        for(int n=arr.length-1;n>=0;n--){
            System.out.print(arr[n]+" ");
        }
    }
}
发表于 2017-09-07 09:12:10 回复(0)
package com.classd;

import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class MathRandom {

public static void main(String[] args) {
Random random = new Random();
int random1 = 0;
List<Character> list = new ArrayList<>();
while (list.size() <= 20) {
random1 = (int) (Math.random() * 26 + 97);
System.out.println(random1);
Character ch1 = (char) random1;
if (list.contains(ch1)) {
list.remove(list.indexOf(ch1));
} else {
list.add(ch1);
}
}
System.out.println(list);
Collections.sort(list);
Collections.reverse(list);
System.out.println(list);
}

}

发表于 2017-09-03 22:04:43 回复(0)