• ASCII码排序


    ASCII码排序

    描述

        输入m个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这m个字符。

    输入
    第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有m个字符组成,之间无空格。
    输出
    对于每组输入数据,输出一行,字符中间用一个空格分开。
    思路:
    方法一:输入一个字符串后利用java自带的库函数转化成字符数组,并利用自带的库函数对字符数组排序,然后输出即可。
    方法二:将字符串存入到字符数组之后,从字符数组中的字符进行排序。
    代码:
    public class SortASCII {
     
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            System.out.println("输入m组测试数据:");
            int m=sc.nextInt();
            String[] str=new String[m];
            System.out.println("要排序的m组ASCII数据为:");
            for(int i=0;i<str.length;i++){    
                str[i]=sc.next();        
            }
            for( int j=0;j<m;j++){
                char ch[]=new char[m];
                ch=order(str[j]);
                System.out.println("这一组ASCII数排列的顺序为:");
                for(int n=0;n<str[j].length();n++){
                    
                    System.out.print(ch[n]+" ");
                }
                System.out.println();
            }
            
            
        }
        public static char[] order(String str)  
         {  
            //方法一:
    //     char[] ch = str.toCharArray();  
    //     Arrays.sort(ch);  
    //     return ch;  
            //方法二:
            char[] ch = new char[50];
             for(int i=0;i<str.length();i++)
                 ch[i] = str.charAt(i);
             for(int j=0;j<ch.length;j++){
                 for(int i=0;i<ch.length-1;i++)
                     if(ch[i]>ch[i+1]){
                         char temp = ch[i];
                         ch[i] = ch[i+1];
                         ch[i+1] = temp;
                     }
             }
             for(int i=0;i<ch.length;i++)
                 System.out.print(ch[i]+" ");
                  System.out.println();
                  return ch;
         }   
    }

    注意:next()与nexLine()的区别:

           next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。

            简单地说,next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息,所以next方法不能得到带空格的字符串。

            而nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。

     举例说明:

     public static void main(String[] args) {  
            String s1,s2;  
            Scanner sc=new Scanner(System.in);  
            System.out.print("请输入第一个字符串:");  
            s1=sc.nextLine();  
            System.out.print("请输入第二个字符串:");  
            s2=sc.next();  
            System.out.println("输入的字符串是:"+s1+" "+s2);  
        }  

    输出结果为:

    请输入第一个字符串:home
    请输入第二个字符串:work

    输入的字符串是:home work

    但如果把程序改一下:

    s1=sc.next();  
    s2=sc.nextLine();  

    运行结果是:
    请输入第一个字符串:home
    请输入第二个字符串:输入的字符串是:home

            可以看到,nextLine()自动读取了被next()去掉的Enter作为他的结束符,所以没办法给s2从键盘输入值。经过验证,我发现其他的next的方法,如double nextDouble() , float nextFloat() , int nextInt() 等与nextLine()连用时都存在这个问题,解决的办法是:在每一个 next()、nextDouble() 、 nextFloat()、nextInt() 等语句之后加一个nextLine()语句,将被next()去掉的Enter结束符过滤掉。

       Scanner sc=new Scanner(System.in);  
       System.out.print("请输入第一个字符串:");  
          s1=sc.next();  
    sc.nextLine();  //过滤掉换行
    System.out.print("请输入第二个字符串:");  
    s2=sc.nextLine();  
      System.out.println("输入的字符串是:"+s1+" "+s2);  

    运行结果是:
    请输入第一个字符串:home
    请输入第二个字符串:work
    输入的字符串是:home work

    运行结果:

  • 相关阅读:
    UI设计师需要熟记的45个快捷键Windows、Mac
    手把手教你制作好莱坞大片级场景——宇宙猫
    关于功能图标的绘制方法!
    设计师该如何把简历写好?
    PS合成的5个要点:场景、对比、氛围、模糊、纹理
    UI设计工资有多高?怎么快速拿高薪?
    19. Remove Nth Node From End of List
    18. 4Sum
    17. Letter Combinations of a Phone Number
    16. 3Sum Closest
  • 原文地址:https://www.cnblogs.com/java-7/p/7154035.html
Copyright © 2020-2023  润新知