使用char数组将字符串转换为int

时间:2013-05-25 15:51:44

标签: java string loops int sum

如何创建一个循环,也可以转换字符串" 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);


                }
           }

4 个答案:

答案 0 :(得分:6)

您可以使用ASCII值。 a的值为97b的值为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)

  1. 使用正则表达式从字符串中删除非字母字符
  2. 使用toLower()或toUpper()
  3. 修改字符串
  4. 将字符串转换为charArray
  5. 将初始结果设为0
  6. 数组中的Foreach char,用64(如果使用大写)或96(如果使用小写)减去char值并将其添加到结果中

答案 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;
    }
}
相关问题