如何在Java中将字符串的第一个(数字)字符转换为整数?

6
假设我有一个双精度浮点型变量,值为1.5,然后我将它转换成字符串,并试图使用char.at方法将第一个字符转换为字符串。
double a = 1.5;
String b = String.valueOf(a);
System.out.println(Integer.valueOf(b.charAt(0)));

但是,当我这样做时,我收到了以下输出:

49

我做错了什么?


如果其中一个答案解决了您的问题,您可以通过将其标记为已接受来帮助社区。已接受的答案有助于未来的访问者自信地使用该解决方案。 - Arvind Kumar Avinash
6个回答

7

valueOf接受intString类型的参数。您传递了一个char(由charAt返回),它被提升为整数。您可以使用substring来获取字符串的第一个字符。

double a = 1.5;
String b = String.valueOf(a);
System.out.println(Integer.valueOf(b.substring(0, 1)));

3

使用Character.getNumericValue(b.charAt(0))获取实际值,而不是ASCII码。


3

这里是获取第一个字符的 ascii 值。

如果你想将一个 String 类型的参数传递给 Integer.valueOf ,请尝试以下操作:

double a = 1.5;
String b = String.valueOf(a);
System.out.println(Integer.valueOf(Character.toString(b.charAt(0))));

另外,如果你想传递一个整数,可以使用Integer.valueOf,使用方法如下:

double a = 1.5;
String b = String.valueOf(a);
System.out.println(Integer.valueOf(Character.getNumericValue(b.charAt(0))));

输出:

1

3
这里有一个名为 getNumericValue 的方法可用于获取字符的数字值:Character.getNumericValue(b.charAt(0)) - Joachim Sauer
1
@JoachimSauer 是的,这个方法肯定也可以用,但我认为 OP 想要将“String”作为参数传递。我更新了答案,包括两种技术。 - Majed Badawi

2
有多种方法可以实现这个目标,其中之一是以下方法(使用Double类):
Double number = 1.5;
System.out.println(number.intValue());

intValue()方法将返回Double实例的int类型表示。


1

parseInt也可以工作:

double a = 1.5;
String b = String.valueOf(a);
int c = Integer.parseInt(b.substring(0,1));
System.out.println(c);

1

'1'的ASCII值是49,这就是你得到的值。如果想要得到1,需要从中减去'0'48(即'0'的ASCII值)。

public class Main {
    public static void main(String[] args) {
        double a = 1.5;
        String b = String.valueOf(a);
        System.out.println(b.charAt(0) - '0');
    }
}

输出:

1

或者,您可以使用 Character#getNumericValue 来获取字符的数值。

public class Main {
    public static void main(String[] args) {
        double a = 1.5;
        String b = String.valueOf(a);
        System.out.println(Character.getNumericValue(b.charAt(0)));
    }
}

输出:

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接