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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 王舜民 于 2012-8-29 06:59 编辑

import java.util.*;
class Demo2
{
        public static void main(String[] args)
        {
               
                Random ran = new Random();
                char[] ch = new char[10];
               
                for (int i=0;i<ch.length ;i++ )
                {
                        int n =ran.nextInt(26)+'A';//包含0,不包含100
                        ch = (char)n;
                        
                        
                                
                        
                }
               
                printchay(ch);//排序前
                maoPao(ch);
                printchay(ch);//排序后
        }
        public static void printchay(char[] ch) //遍历打印数组功能
        {
                System.out.print("[");
                for(int x=0;x<ch.length;x++) //控制循环次数
                {
                        if(x!=ch.length-1) //判断 没有到最后一个元素
                                System.out.print(ch[x]+",");
                        else
                                System.out.println(ch[x]+"]");
                }
        }

        public static void maoPao(char[] ch)
        {
                for(int x=0;x<ch.length-1;x++)
                {
                        for(int y=0;y<ch.length-x-1;y++)//ch.length控制数组长度 ;逐级减少比较次数用-x;为控制越界问题-1
                        {
                                /////互换元素
                                if(ch[y]>ch[y+1])//前面元素和后面元素比较大小。最值(最小值)出现右面的方法
                                {
                                        //这边理论优化应该将互换元素重新作为一个方法,不过估计就和别人代码一样了
                                        char temp = ch[y];  //通过临时的temp存储前面一个元素
                                        ch[y]=ch[y+1];
                                        ch[y+1]=temp; //  
                                }
                        }
                }
        }
}

7 个回复

倒序浏览
现在上基础班,发现自己基础掌握真的不给力。
回复 使用道具 举报
  1. import java.util.*;
  2. class Demo2
  3. {
  4. public static void main(String[] args)
  5. {

  6. Random ran = new Random();
  7. char[] ch = new char[10];

  8. for (int i=0;i<ch.length ;i++ )
  9. {
  10. int n =ran.nextInt(26)+'a';//包含0,不包含100
  11. ch [i]= (char)n;
  12. if (i!=0)
  13. {
  14. for(int x=0;x<i;x++)//将新添加的元素与数组中已有的元素进行逐个比较,重复的话,i减1,也就是将重复的元素干掉了,重新添加一个元素。
  15. {
  16. if(ch[i]==ch[x])
  17. --i;
  18. }
  19. }
  20. }

  21. printchay(ch);//排序前
  22. maoPao(ch);
  23. printchay(ch);//排序后
  24. }
  25. public static void printchay(char[] ch) //遍历打印数组功能
  26. {
  27. System.out.print("[");
  28. for(int x=0;x<ch.length;x++) //控制循环次数
  29. {
  30. if(x!=ch.length-1) //判断 没有到最后一个元素
  31. System.out.print(ch[x]+",");
  32. else
  33. System.out.println(ch[x]+"]");
  34. }
  35. }

  36. public static void maoPao(char[] ch)
  37. {
  38. for(int x=0;x<ch.length-1;x++)
  39. {
  40. for(int y=0;y<ch.length-x-1;y++)//ch.length控制数组长度 ;逐级减少比较次数用-x;为控制越界问题-1
  41. {
  42. /////互换元素
  43. if(ch[y]>ch[y+1])//前面元素和后面元素比较大小。最值(最小值)出现右面的方法
  44. {
  45. //这边理论优化应该将互换元素重新作为一个方法,不过估计就和别人代码一样了
  46. char temp = ch[y]; //通过临时的temp存储前面一个元素
  47. ch[y]=ch[y+1];
  48. ch[y+1]=temp; //
  49. }
  50. }
  51. }
  52. }
  53. }
复制代码
回复 使用道具 举报
王自强 发表于 2012-8-28 12:20

牛叉。谢谢啊!
回复 使用道具 举报
王自强 发表于 2012-8-28 12:20

为什么i不能=0?
回复 使用道具 举报
如果i=0的话  在第二次循环的时候不是就判断了ch[0]==ch[0]了么  这样还有什么意思呢,所以这种情况那个哥们就排除了。
回复 使用道具 举报
杨卫腾 发表于 2012-8-28 13:09
如果i=0的话  在第二次循环的时候不是就判断了ch[0]=ch[0]了么  这样还有什么意思呢,所以这种情况那个哥 ...

恩。嘿嘿
回复 使用道具 举报
本帖最后由 倪鹏博 于 2012-8-28 23:19 编辑

for (int i=0;i<ch.length ; )
{
int n =ran.nextInt(26)+'a';
boolean flag=true;
for(int x=0;x<i;x--)//将新生成的元素与数组中已有的元素进行逐个比较,重复的话,跳出进行下一个随机数的生成,也就是将重复的元素消灭在萌芽状态
{
if((char)n==ch[x])
{
flag=false;
break;
}
}
if(flag)
ch[i++] =(char)n; }
这样应该也能实现
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马