ASCII:无法在原始类型int上调用length()

时间:2019-06-18 15:44:08

标签: java

作为创建哈希表的一部分,我需要将字符串的符号转换为ASCII,并且需要该ASCII的长度。我在此站点上发现,足以将int转换为字符串以将其转换为ASCII,但是我不能将其用作对象。

public int hash(String x) {


    int stringLength = x.length();

    for (int i = 0; i < stringLength; i++) {

        char character = x.charAt(i);
        int ascii = (int) character;
        int z = ascii.length();
}

我希望获得一些整数方法,但似乎无法正常工作,并且在Cannot invoke length() on the primitive type int处出现错误ascii.length()

3 个答案:

答案 0 :(得分:1)

我假设您正在尝试获取字符的值,因为这实际上是ascii代码:

为此,请使用Character类而不是char基元:

Release

答案 1 :(得分:1)

原语不是对象,不能取消引用。

您可以做的是使用Integer,它是一个包装int的类,使用其toString()方法,并在结果上使用length()。

类似

char character = x.charAt(i);
int z = Integer.valueOf((int) character).toString().length();

(已编辑,因为valueOf不带字符)

这将告诉您字符的代码十进制表示形式有多少个数字。我不知道您为什么需要它,但这就是我对您问题的理解。

答案 2 :(得分:-1)

要获取ASCII码的长度,可以将值转换为字符串并获取其长度:

public int hash(String x) {

    int stringLength = x.length();
    String value;
    int ascii, asciiLength;
    for (int i = 0; i < stringLength; i++) {

        ascii = x.charAt(i); // chars are just fancy numbers. This does an implicit cast to int
        value = Integer.toString(ascii);
        asciiLength = value.length();
    }

}

Demo