使用 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
具有值 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;
【讨论】:
这只适用于小写字母。大写意味着减去 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的主要内容,如果未能解决你的问题,请参考以下文章