任务描述:
现有一串字符(长度不超过255个字符),需对其中的数值字符求和(需转换成整型进行计算)。
解决思路:
输入字符串,循环对每个字符否为数字,转换整型并求和
转换整型有以下的方式
1. sum += str.charAt(i) - '0';
这种方法利用了字符的 Unicode 值。字符 '0'
到 '9'
的 Unicode 值是连续的,而且 '0'
的 Unicode 值正好对应数字 0。因此,当你从一个数字字符减去 '0'
时,你实际上得到了该字符代表的数字。
char c = '5';
int num = c - '0'; // num 的值为 5
2. int digitValue = Character.digit(str.charAt(i), 10);
Character.digit()
方法用于从一个字符中提取它的
char c = '5';
int numericValue = (int) Character.getNumericValue(c); // numericValue 的值为 5
数字值。它接受两个参数:要转换的字符和基数(通常为 10 表示十进制)。该方法会返回字符的数字值。
char c = '5';
int digitValue = Character.digit(c, 10); // digitValue 的值为 5
3. int intValue = Integer.parseInt(String.valueOf(str.charAt(i)));
Integer.parseInt()
方法用于从一个字符串中解析出整数。首先,我们需要将字符转换为一个长度为 1 的字符串,然后使用 Integer.parseInt()
方法来获取整数值。
char c = '5';
String singleCharString = String.valueOf(c); // singleCharString 的值为 "5"
int intValue = Integer.parseInt(singleCharString); // intValue 的值为 5
4. int numericValue = (int) Character.getNumericValue(str.charAt(i));
Character.getNumericValue()
方法用于从一个字符中提取它的数字值。它返回一个 float
类型的值,但是当我们处理数字字符时,返回值通常是一个整数,可以安全地转换为 int
类型。
代码示例:
package a4_2024_07;import java.util.Scanner;/*** 现有一串字符(长度不超过255个字符)* 需对其中的数值字符求和(需转换成整型进行计算)。*/
public class j240725_3 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入字符串:");String str = sc.nextLine();int sum = 0;for (int i = 0; i < str.length(); i++) {if (str.charAt(i) >= '0' && str.charAt(i) <= '9') {int digitValue = Character.digit(str.charAt(i), 10); // 将字符转换为对应的数字值, 10进制sum += digitValue;}}System.out.println("字符串中数值字符的和为:" + sum);}
}