繁体   English   中英

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

[英]How do you turn the first (numerical) character of a string into an integer in Java?

因此,假设我有一个 1.5 的双char.at ,然后将其转换为字符串,然后尝试使用char.at方法将第一个字符转换为字符串。

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

但是当我这样做时,这是我收到的输出:

49

我做错了什么?

valueOf接受一个int或一个String 您传递了一个被提升为整数的char (由charAt返回)。 您可以使用substring来获取substring的第一个字符。

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

它采用第一个字符的ascii值。

如果要将Integer.valueOf String作为参数传递,请尝试以下操作:

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

只需使用 Character.getNumericValue(b.charAt(0)); 获取实际值而不是 ASCII

有多种方法可以做到这一点,一种方法如下(使用Double类):

Double number = 1.5;
System.out.println(number.intValue());

intValue()方法将返回 Double 的 istance 的int表示

parseInt 也可以工作:

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

'1'的 ASCII 值是49 ,这就是你得到的。 为了得到1 ,你需要减去'0'48 (ASCII值'0'的话)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM