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

Posted

技术标签:

【中文标题】使用 char 数组将字符串转换为 int【英文标题】:Convert string to int using char array 【发布时间】:2013-05-21 00:25:31 【问题描述】:

如何创建一个循环,同时将字符串“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);


                
           

【问题讨论】:

a = 97、b = 98 等的 ASCII。您可以遍历数字并减去 96 得到 1、2 等。 你知道字符可以转换成整数或加减吗? int number = 'c'-'a';//=2. 谢谢你们。我喜欢偶尔使用java,但一年后我的知识变得如此生疏:(。 【参考方案1】:

您可以使用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;

【讨论】:

这只适用于小写字母。大写意味着减去 65。 @rethab 我知道,这就是为什么我将 ASCII 表与我的答案联系起来。 你可以通过在 toCharArray() 之前调用 toLowerCase() 来解决这个问题【参考方案2】:

您可以利用字符可以转换为整数的事实,从而获取它们的 ASCII 值。例如System.out.println((int)'a') 将打印 '97'。知道了这一点,您只需根据是大写字母还是小写字母减去某个数字,a 得到 1,b 得到 2 等等。

【讨论】:

【参考方案3】:
    使用正则表达式从字符串中删除非字母字符 使用 toLower() 或 toUpper() 修改字符串 将字符串转换为charArray 设置初始结果为0 对于数组中的每个字符,用 64(如果使用大写)或 96(如果使用小写)减去 char 值并将其添加到结果中

【讨论】:

【参考方案4】:

这里有两种解决方案:一种是按要求使用循环,另一种是使用递归。 这适用于大写和小写字母,但不考虑非字母字母。这可以很容易地在 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;
    

【讨论】:

以上是关于使用 char 数组将字符串转换为 int的主要内容,如果未能解决你的问题,请参考以下文章

LPCWSTR 和char数组的转换

vs2013 提示无法从void转换为char

怎样将int类型的数组转换成string

char *怎样转成int

如何将char类型转换成int类型?

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