1.字符类Character
Java为每一种基本数据类型都提供了一个包装类,这些类是Character,Boolean,Byte,Short,Integer,Long,Float和Double,它们也分别对应基本类型。
我们可以用一个char值创建一个Character对象,例如,下面的语句为字符a创建一个Character对象:
Character character = new Character(\’a\’);
charValue方法返回包装在Character对象中的字符值。方法compareTo将该字符与另一个字符进行比较,返回一个整数值,这个整数值是该字符与另一个字符统一码的差值,当且仅当两个字符相同时,equals方法才返回true。例如,假设charObject为 new Character(\’b\’),则;
charObject.compareTo(new Character(\’a\’))返回1
charObject.compareTo(new Character(\’b\’))返回0
charObject.compareTo(new Character(\’c\’))返回-1
charObject.equals(new Character(\’b\’))返回true
charObject.equals(new Character(\’a\’))返回false
Character类中还有很多方法,我们在具体要使用的时候可以上网上或者书上具体查询,这里就不一一列举了。
问题:统计字符串中的每个字母
我们要编写一个程序,提示用户输入一个字符串,然后统计在忽略字母大小写的情况下,字符串中每个字母出现的次数。
下面是解决这个问题的步骤,首先使用String类中的toLowerCase方法将字符串中的大写字母转换成小写模式,之后创建一个由26个int值构成的数组,数组的每个元素记录一个字母出现的次数,最后对字符串中的每一个字符,判断其是否是小写字母,如果是,则给数组中对应的计数器加1.程序清单如下:
package tongji;
import java.util.Scanner;
/**
*
* @author john
*/
public class Tongji {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Scanner input = new Scanner(System.in);
System.out.println(\”Enter a string:\”);
String s = input.nextLine();
int []counts = countLetters(s.toLowerCase());
for(int i=0;i<counts.length;i++){
if(counts[i]!=0)
System.out.println((char)(\’a\’+i)+\”appears\”+counts[i]+((counts[i]==1)?\”time\”:\”times\”));
}
}
public static int[]countLetters(String s){
int[] counts = new int[26];
for(int i=0;i<s.length();i++){
if(Character.isLetter(s.charAt(i)))
counts[s.charAt(i)-\’a\’]++;
}
return counts;
}
}
countLetters方法,返回一个26个元素构成的数组,每个元素统计字符串中出现的次数,由于字母的大小写是忽略的,因此我们用toLowercase方法将字符串转换成所有字符都是小写字母。 countLetters方法处理字符串中的每个字符,如果字符为字母,其对应的计数器加1,在最后我们为了使得程序更清晰,如果出现1次,输出为time,如果出现的次数不是1,则输出为times,程序正确运行。