用Java编写程序对字符串"68765Shfsa*3219(6faylahjyAbo81av)tiA52N<6#6&0_84" 按字符的ASCII值排序,并统计各种字符的个数。
char的值即为其ascii码值..因此.代码如下
public class CharsSort {
// 排序,采用冒泡排序法
public static String sort(String str) {
char chs[] = str.toCharArray();
int size = chs.length;
char temp;
for (int i = 0; i < size; i++) {
for (int j = size - 1; j > i; j--) {
if (chs[j] < chs[j - 1]) {
temp = chs[j];
chs[j] = chs[j - 1];
chs[j - 1] = temp;
}
}
}
return new String(chs);
}
// 用做统计各类字符数目
public static void statistic(String str) {
int countOfNumber = 0;// 数字的数目
int countOfLeter = 0;// 字母的数目
int countOfSymbol = 0;// 符号的数目
char[] chs = str.toCharArray();
int size = chs.length;
// 判断字符类型,分类统计
for (int i = 0; i < size; i++) {
if ((chs[i] < 'z' && chs[i] > 'a')
|| (chs[i] < 'Z' && chs[i] > 'A')) {
countOfLeter++;
} else if (chs[i] < '9' && chs[i] > '0') {
countOfNumber++;
} else {
countOfSymbol++;
}
}
// 打印统计结果
System.err.println("包含字母:" + countOfLeter + "个");
System.err.println("包含数字:" + countOfNumber + "个");
System.err.println("包含其他符号:" + countOfSymbol + "个");
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 测试结果
String str = "68765Shfsa*3219(6faylahjyAbo81av)tiA52N<6#6&0_84";
str = sort(str);// 字符串排序
System.err.println(str);// 打印结果
statistic(str);// 统计各类字符数目
}
}
public class CharsSort {
// 排序,采用冒泡排序法
public static String sort(String str) {
char chs[] = str.toCharArray();
int size = chs.length;
char temp;
for (int i = 0; i < size; i++) {
for (int j = size - 1; j > i; j--) {
if (chs[j] < chs[j - 1]) {
temp = chs[j];
chs[j] = chs[j - 1];
chs[j - 1] = temp;
}
}
}
return new String(chs);
}
// 用做统计各类字符数目
public static void statistic(String str) {
int countOfNumber = 0;// 数字的数目
int countOfLeter = 0;// 字母的数目
int countOfSymbol = 0;// 符号的数目
char[] chs = str.toCharArray();
int size = chs.length;
// 判断字符类型,分类统计
for (int i = 0; i < size; i++) {
if ((chs[i] < 'z' && chs[i] > 'a')
|| (chs[i] < 'Z' && chs[i] > 'A')) {
countOfLeter++;
} else if (chs[i] < '9' && chs[i] > '0') {
countOfNumber++;
} else {
countOfSymbol++;
}
}
// 打印统计结果
System.err.println("包含字母:" + countOfLeter + "个");
System.err.println("包含数字:" + countOfNumber + "个");
System.err.println("包含其他符号:" + countOfSymbol + "个");
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 测试结果
String str = "68765Shfsa*3219(6faylahjyAbo81av)tiA52N<6#6&0_84";
str = sort(str);// 字符串排序
System.err.println(str);// 打印结果
statistic(str);// 统计各类字符数目
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2009-08-25
//很多的简便方法..多了解下API
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
public class test {
public static void main(String[] args) {
String str = "68765Shfsa*3219(6faylahjyAbo81av)tiA52N<6#6&0_84=";
Map table = new LinkedHashMap(); //创建个键值对
char[] c = str.toCharArray(); //把字符串变成char数组
Arrays.sort(c); //自动排序
for (char b : c) {
if (table.containsKey(b)) { //当存在.值加1位数
Integer count = (Integer) table.get(b);
table.put(b, new Integer(count.intValue() + 1));
} else{
table.put(b, new Integer(1)); //不存在.添加.值为1
}
}
String output="字符\tASCII\t数量\n";
Set set = table.keySet();
Iterator it = set.iterator();
while (it.hasNext()) { //循环输出结果
Object obj = it.next();
output+=obj+"\t"+obj.hashCode()+"\t"+table.get(obj)+"\n";
}
output+="size: "+table.size()+"\n";
System.out.println(output);
}
}
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
public class test {
public static void main(String[] args) {
String str = "68765Shfsa*3219(6faylahjyAbo81av)tiA52N<6#6&0_84=";
Map table = new LinkedHashMap(); //创建个键值对
char[] c = str.toCharArray(); //把字符串变成char数组
Arrays.sort(c); //自动排序
for (char b : c) {
if (table.containsKey(b)) { //当存在.值加1位数
Integer count = (Integer) table.get(b);
table.put(b, new Integer(count.intValue() + 1));
} else{
table.put(b, new Integer(1)); //不存在.添加.值为1
}
}
String output="字符\tASCII\t数量\n";
Set set = table.keySet();
Iterator it = set.iterator();
while (it.hasNext()) { //循环输出结果
Object obj = it.next();
output+=obj+"\t"+obj.hashCode()+"\t"+table.get(obj)+"\n";
}
output+="size: "+table.size()+"\n";
System.out.println(output);
}
}
第2个回答 2009-08-25
这个也太没有难度了
我给你思路你自己做OK?
用循环遍历数组,逐个判断每个类型,类型自己分,满足你要的类型,计数机++就OK了
如果你满意的话给我多加分,如果你还是不懂的话,给我留言,我给你解决。我qq08424683
我给你思路你自己做OK?
用循环遍历数组,逐个判断每个类型,类型自己分,满足你要的类型,计数机++就OK了
如果你满意的话给我多加分,如果你还是不懂的话,给我留言,我给你解决。我qq08424683
第3个回答 2009-08-25
汗,直接冒泡。。