java例题_40 字母字符串转数组后排序
1 /*40 【程序 40 字符串排序】 输入一个字符串数组,按照字母表的降序对这些字符串进行排序。
2 题目:字符串排序。
3 */
4
5 /*分析
6 * 1、从键盘得到一个纯字母的字符串
7 * 2、遍历字符串的每一个字母
8 * 3、将字母按照ASCII码从大到小排序
9 * 排序实现方法:
10 * 将字符串存入数组中,再用冒泡排序实现
11 * */
12
13 //【注】
14 /*=====================字符串存入数组的三种方法===============
15 * String Str="abnckdjgdag";
16 char a[]=new char[Str.length()];
17
18 方法1 用于取出字符串的指定索引的字符charAt()---------------
19 for(int i=0;i<Str.length();i++){
20 a[i]=Str.charAt(i);//charAt(i)方法取出一个字符串索引为i的字符
21 }
22
23 方法2 用于直接将字符串传入数组toCharArray()----------------
24 a=Str.toCharArray();//toCharArry()方法将一个字符串按字符传入数组
25
26 方法3 用于将字符串的子串传入数组getChars()-----------------
27 Str.getChars(0,Str.length(),a,0);//getChars(Str要拷贝子串的起始索引,Str要拷贝子串的末尾索引,要拷贝到的数组,要拷贝到数组的起始索引)
28 ===============================================================================*/
29
30
31 package homework;
32
33 import java.util.Scanner;
34
35 public class _40 {
36
37 public static void main(String[] args) {
38 // 从键盘得到一个纯字母的字符串
39 System.out.println("请输入一个只包含字母的字符串,并以回车键结束:");
40 Scanner sc=new Scanner(System.in);
41 String str=sc.nextLine();
42 String str2= str.replaceAll("[^a-zA-Z]", ""); //字符串中只保留字母的操作
43 //得到字符串的长度,用于创建数组
44 int n=str2.length();
45 //将字符串存入数组中
46 char[] a=new char[n];
47 a=str2.toCharArray(); //经过测试,并没有将字符串结束符存入数组
48 // //测试
49 // for (int i = 0; i < a.length; i++) {
50 // System.out.print(a[i]+"1");
51 // }
52 //冒泡排序法 (abcdefghijk)
53 char temp;
54 for (int i = 0; i < a.length; i++) {
55 for (int j = 0; j < (a.length-1); j++) {
56 if (a[j]<a[j+1]) {
57 temp=a[j];
58 a[j]=a[j+1];
59 a[j+1]=temp;
60 // System.out.print(j+" "); //测试
61 }
62 }
63 }
64 //输出结果
65 for (int i = 0; i < a.length; i++) {
66 System.out.print(a[i]+" ");
67 }
68
69 }
70
71 }