问题描述:
如输入单个字母a~z, 输出数字1~26
完整代码:
package test;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Test {
public static void main(String[] args) throws ParseException {
int num = transAlphabet("A");
System.out.println(num);
}
/**
* 输出英文字母对应的数字
* 输入字母a~z, 输出数字1~26
*/
private static int transAlphabet(String str) {
if(str == null || sumStrAscii(str.toLowerCase()) < 97 || sumStrAscii(str.toLowerCase()) > 122)
return -1;
List<String> list = new ArrayList<String>();
list.addAll(Arrays.asList(new String[]{"a", "b","c", "d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"}));
return list.indexOf(str.toLowerCase()) + 1;
}
/**
* 求出字符串的ASCII值和
* 注意,如果有中文的话,会把一个汉字用两个byte来表示,其值是负数
*/
public static int sumStrAscii(String str){
byte[] bytestr = str.getBytes();
int sum = 0;
for(int i=0;i<bytestr.length;i++){
sum += bytestr[i];
}
return sum;
}
}