我只是想知道是否有更好的解决方案来从字符串中的字符解析数字(假设我们知道索引n的字符是一个数字)。
String element = "el5";
String s;
s = ""+element.charAt(2);
int x = Integer.parseInt(s);
//result: x = 5
(说它只是一个例子没用)
我只是想知道是否有更好的解决方案来从字符串中的字符解析数字(假设我们知道索引n的字符是一个数字)。
String element = "el5";
String s;
s = ""+element.charAt(2);
int x = Integer.parseInt(s);
//result: x = 5
(说它只是一个例子没用)
当前回答
通过简单地减去字符'0'(零),一个字符(数字'0'到'9')可以转换为int(0到9),例如,'5'-'0'给出int 5。
String str = "123";
int a=str.charAt(1)-'0';
其他回答
Integer: Integer或int数据类型是一个32位有符号的二补整数。其值范围介于- 2,147,483,648(-2^31)到2,147,483,647(2^31 -1)(含)之间。其最小值为- 2,147,483,648,最大值为2,147,483,647。缺省值为0。int数据类型通常用作整型值的默认数据类型,除非内存没有问题。
Example: int a = 10
Character: char数据类型是单个16位Unicode字符。它的值范围在' \u0000 '(或0)到' \uffff '(或包括65,535)之间。char数据类型用于存储字符。
Example: char ch = 'c'
方法 有许多方法可以将Char数据类型转换为Integer (int)数据类型。下面列出了其中的一些。
使用ASCII值 使用String.valueOf()方法 使用Character.getNumericValue()方法
1. 使用ASCII值
此方法使用TypeCasting获取给定字符的ASCII值。相应的整数是从这个ASCII值减去0的ASCII值计算出来的。换句话说,该方法通过查找该char的ASCII值与ASCII值0之间的差值,将该char转换为int。
例子:
// Java program to convert
// char to int using ASCII value
class GFG {
public static void main(String[] args)
{
// Initializing a character(ch)
char ch = '3';
System.out.println("char value: " + ch);
// Converting ch to it's int value
int a = ch - '0';
System.out.println("int value: " + a);
}
}
输出
char value: 3
int value: 3
2. 使用String.valueOf()方法
String类的valueOf()方法可以将各种类型的值转换为String值。它可以将int、char、long、boolean、float、double、object和char数组转换为String,可以使用Integer.parseInt()方法将String转换为int值。下面的程序演示了valueOf()方法的使用。
例子:
// Java program to convert
// char to int using String.valueOf()
class GFG {
public static void main(String[] args)
{
// Initializing a character(ch)
char ch = '3';
System.out.println("char value: " + ch);
// Converting the character to it's int value
int a = Integer.parseInt(String.valueOf(ch));
System.out.println("int value: " + a);
}
}
输出
char value: 3
int value: 3
3.使用Character.getNumericValue()方法
Character类的getNumericValue()方法用于获取任何特定字符的整数值。例如,字符' 9 '将返回一个值为9的int。下面的程序演示了getNumericValue()方法的使用。
例子:
// Java program to convert char to int
// using Character.getNumericValue()
class GFG {
public static void main(String[] args)
{
// Initializing a character(ch)
char ch = '3';
System.out.println("char value: " + ch);
// Converting the Character to it's int value
int a = Character.getNumericValue(ch);
System.out.println("int value: " + a);
}
}
输出
char value: 3
int value: 3
裁判:https://www.geeksforgeeks.org/java-program-to-convert-char-to-int/
String element = "el5";
int x = element.charAt(2) - 48;
从char中减去ascii值'0' = 48
尝试Character getNumericValue (char)。
String element = "el5";
int x = Character.getNumericValue(element.charAt(2));
System.out.println("x=" + x);
生产:
x=5
关于getNumericValue(char)的好处是它也适用于“el٥”和“el५”这样的字符串,其中٥和५分别是东阿拉伯语和北印度语/梵语中的数字5。
使用二进制与0b1111:
String element = "el5";
char c = element.charAt(2);
System.out.println(c & 0b1111); // => '5' & 0b1111 => 0b0011_0101 & 0b0000_1111 => 5
// '0' & 0b1111 => 0b0011_0000 & 0b0000_1111 => 0
// '1' & 0b1111 => 0b0011_0001 & 0b0000_1111 => 1
// '2' & 0b1111 => 0b0011_0010 & 0b0000_1111 => 2
// '3' & 0b1111 => 0b0011_0011 & 0b0000_1111 => 3
// '4' & 0b1111 => 0b0011_0100 & 0b0000_1111 => 4
// '5' & 0b1111 => 0b0011_0101 & 0b0000_1111 => 5
// '6' & 0b1111 => 0b0011_0110 & 0b0000_1111 => 6
// '7' & 0b1111 => 0b0011_0111 & 0b0000_1111 => 7
// '8' & 0b1111 => 0b0011_1000 & 0b0000_1111 => 8
// '9' & 0b1111 => 0b0011_1001 & 0b0000_1111 => 9
String a = "jklmn489pjro635ops";
int sum = 0;
String num = "";
boolean notFirst = false;
for (char c : a.toCharArray()) {
if (Character.isDigit(c)) {
sum = sum + Character.getNumericValue(c);
System.out.print((notFirst? " + " : "") + c);
notFirst = true;
}
}
System.out.println(" = " + sum);