Java 将字符串转换为整数数组
我有一个int数组,在每个索引中保存一个数字,这样一旦打印出来,它就会显示一个长数字。例如:digit={1,2,3,4,5}看起来像12345 我有一个方法,它将字符串作为参数,并将它从字符串中获取的数字放入数字数组。 看起来是这样的:Java 将字符串转换为整数数组,java,arrays,initialization,Java,Arrays,Initialization,我有一个int数组,在每个索引中保存一个数字,这样一旦打印出来,它就会显示一个长数字。例如:digit={1,2,3,4,5}看起来像12345 我有一个方法,它将字符串作为参数,并将它从字符串中获取的数字放入数字数组。 看起来是这样的: digit = new int [50]; for (int i = 0; i < myString.length(); i++) {digit[i] = Character.digit(myString.charAt(i), 10)}; 我明白了
digit = new int [50];
for (int i = 0; i < myString.length(); i++)
{digit[i] = Character.digit(myString.charAt(i), 10)};
我明白了
1234567890012345678901234567890123456789012345678900000000000
12345678901213456789012345678901234567890123456000000000
谁能给我解释一下为什么会有这些尾随的零吗?您的数组可以包含50个项。但是,您传入的字符串少于50位。创建新数组将使用其默认值初始化其中的每个项。在本例中,它是一个整数,因此默认值为0。这就是为什么你会得到后面的零 听起来你想要的是一个集合而不是数组。我不知道Java有什么收集类型,但在C#中,大多数人使用
列表来自:
每个类变量、实例
变量,或数组组件为
在以下情况下使用默认值初始化:
其创建(§15.9,§15.10):
- 对于byte类型,默认值为零,即
(字节)0李>
- 对于type short,默认值为零,即
(短)0李>
- 对于int类型,默认值为零,即0。
- 对于long类型,默认值为零,即0L李>
- 对于类型float,默认值为正零,即0.0f李>
- 对于double类型,默认值为正零,即0.0d李>
- 对于char类型,默认值为空字符,即,
“\u0000”李>
- 对于boolean类型,默认值为false
创建数组时,数组中的所有整数都将初始化为0,但最后的整数不会被覆盖(因为放入数组中的数字小于50位)。您需要使数字数组与字符串大小相同:
digit = new int [myString.length()];
瞧。后面的零在那里,因为当你创建int
时,整个数组最初只是零(正如eldarerathis所指出的)
解决这个问题很容易。只需替换:
digit=新整数[50]代码>
与
digit=newint[myString.length()]代码>
通过这种方式,您可以创建一个int
数组,该数组等于您拥有的位数,并且不会有任何未初始化的条目。使用数组没有问题,他只需要将其初始化为字符串的长度。谢谢,这很有帮助,不确定我以前为什么没有看到它:)
digit = new int [myString.length()];