当前位置: 首页 > 知识库问答 >
问题:

在将hashcode转换为字符串后,我无法在Java中将其重新转换为int

戈建白
2023-03-14

我对旨在为我的类打印一个假设的新hashCode的方法有一个问题。我试图为每个对象创建一个hashcode,它将由我的类的两个String变量的hashcode组成。这是我的代码:

public void printHashCodes(){
    String plateNumber = String.valueOf(this.liNumber.hashCode()) + String.valueOf(this.country.hashCode());
    int hashCodeToConvert = Integer.valueOf(plateNumber);
    System.out.println(hashCodeToConvert);
    System.out.println(plateNumber);
}

每当我删除“HashCodeToConvert”行并打印一个名为“PlateNumber”的字符串时,方法都能正常工作。从这一点上,我了解到将连接的hashcode转换为字符串是成功的。

每当我将“platenumber”字符串的内容替换为一些常量值(如“123456789”)时,该方法也能很好地工作,所以代码一定能很好地工作,但在上面的形式中,它就是不工作。

我假设在将潜在的无限字符串转换成有限的原语int时一定会有一些限制,但是实际的原因是什么,这个问题的解决方案是什么呢?

澄清:我的实际目的是为一个对象创建一个hashCode,但是我使用printHashCodes方法来验证这些hashCode。因为hashCode必须是一个int,所以我必须将它重新转换为int。它不能像绳子一样(我所知道的最古老的)

共有1个答案

潘俊楚
2023-03-14

我可以看出你的代码失败的两个原因。首先,String.ValueOf(This.Linumber.HashCode())+String.ValueOf(This.Country.HashCode())的结果可能太大。

整数的最大值是2147483647。

其次,hashCode()方法的输出可能低于零,platenumber的值可能是2147483647-1164645587,这不容易转换为整数。

在这两种情况下,它都将抛出java.lang.NumberFormatException

对我来说,最简单的解决方案是为包含这两个值的对象创建一个hashcode。或使用此:

return Objects.hash(liNumber, country);
 类似资料:
  • 所以我尝试将int转换为string,然后再转换为charAt(0)、charAt(1)和charAt(2)。我这样做是为了把3位数的整数拆分成3个不同的整数。然后我想把这些整数转换成字符串。 我想做的是从101及以上的数字中提取并用文字打印出来。我有数百种、十种和一种方法。我试着把第一个整数应用到百分法,第二个整数应用到十分法,第三个整数应用到一分法。 这是一种 现在我正试着打印单词,我发现了3

  • 本文向大家介绍在Java中将StringBuilder转换为字符串,包括了在Java中将StringBuilder转换为字符串的使用技巧和注意事项,需要的朋友参考一下 StringBuilder类的toString()方法重新运行当前对象的String值。要将StringBuilder转换为String值,只需在其上调用toString()方法。 实例化StringBuilder类。 使用appe

  • 如何将Java中的字符串(如12.34)转换为双精度?

  • 问题内容: 如果字符串是java中的任何有效数字(例如int,long,double等),我如何将字符串转换为抽象数字。 我将不知道字符串中数字的类型,所以我不能使用特定的原始解析(例如Integer.parseInt,Long.parseLong等)。有什么通用的方法可以转换它吗? 例如: 字符串->数字 “ 23423”-> 23423 “ 34.3”-> 34.3 “ 45364573747

  • 本文向大家介绍在Java中将Java字符串转换为Short,包括了在Java中将Java字符串转换为Short的使用技巧和注意事项,需要的朋友参考一下 使用方法将Java中的String转换为Short。 让我们来一串。 以下是一个例子- 现在,使用Short对象并使用方法。参数应该是我们在上面声明的字符串。 以下是一个示例。 现在让我们看整个示例,以学习如何将Java中的字符串转换为Short。

  • 问题内容: 您如何将此String转换为gson.JsonArray? 这是我的代码: 这是将这个Collections字符串转换为JSonArray的方法吗? 问题答案: 要在JSON数组中包含字符串值,必须记住在Java程序中用反斜杠转义双引号。请参见下面的声明。 您在main()方法中的代码可以正常工作。以下只是对main()方法中的代码的微小修改。 最后,请记住在语句“ com.googl