【问题标题】:Convert string to int using char array使用 char 数组将字符串转换为 int
【发布时间】: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,但一年后我的知识变得如此生疏:(。

标签: java string loops int sum


【解决方案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】:
    1. 使用正则表达式从字符串中删除非字母字符
    2. 使用 toLower() 或 toUpper() 修改字符串
    3. 将字符串转换为charArray
    4. 设置初始结果为0
    5. 对于数组中的每个字符,用 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;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多