如何创建一个循环,也可以转换字符串" abcc"进入他们的字母位置的总和,比如a = 1 b = 2 c = 3并且它将字符串1 + 2 + 3 + 3 = 9加起来。
import java.util.Arrays;
public class Test
{
public static void main(String[] args)
{
String original = "hello";
char[] chars = original.toCharArray();
Arrays.sort(chars);
String sorted = new String(chars);
System.out.println(sorted);
}
}
答案 0 :(得分:6)
您可以使用ASCII值。 a
的值为97
,b
的值为98
,依此类推。
private int printSum(String original){
int sum = 0;
if(original!=null){
char[] arr = original.toLowerCase().toCharArray();
for(int x :arr){
sum+= (x-96);
}
}
return sum;
}
答案 1 :(得分:3)
您可以利用这样的事实:可以将字符强制转换为整数,从而获取其ASCII值。例如System.out.println((int)'a')将打印'97'。知道这一点,你只需要根据它是一个大写或小写字母减去一个数字,你得到1为a,2为b等。
答案 2 :(得分:1)
答案 3 :(得分:1)
以下是两个解决方案:一个具有请求的循环,另一个具有递归。
这适用于大写和小写字母,但不考虑非字母字母。这可以使用以下标准在if语句中轻松测试:Character.isAlphabetic( c )
。
public class Main {
static final int LOWERCASE_OFFSET = 96;
static final int UPPERCASE_OFFSET = 64;
public static void main( String[] args ){
System.out.println(recursion( "Abcc" ));
}
static int recursion( String str ) {
if( str.isEmpty() )
return 0;
char c = str.charAt( 0 );
int charVal = Character.isUpperCase( c ) ? c - UPPERCASE_OFFSET : c - LOWERCASE_OFFSET;
return charVal + recursion( str.substring( 1 ) );
}
static int loop( String str ) {
int val = 0;
for( char c : str.toCharArray() ) {
val += Character.isUpperCase( c ) ? c - UPPERCASE_OFFSET : c - LOWERCASE_OFFSET;
}
return val;
}
}