繁体   English   中英

将String转换为int数组

[英]Convert String to int array

我有一个int数组,在每个索引中保存一个数字,这样一旦打印出来,它就会显示一个长数字。 例如:数字= {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)};

现在当我将这两个字符串传递给函数时:

String str1 = "1234567890123456789012345678901234567890";
String str2 = "0000123456789012345678901234567890123456";

我明白了

12345678901234567890123456789012345678900000000000

1234567890123456789012345678901234560000000000

有人可以向我解释为什么那些尾随的零存在吗?

您的数组可以包含50个项目。 但是,您传入的字符串少于50位。 创建一个新数组将使用其默认值初始化其中的每个项目。 在这种情况下,它是一个整数,因此默认值为0.这就是你得到尾随零的原因。

听起来你想要的是一个集合而不是一个数组。 我不知道Java有哪些集合类型,但在C#中,大多数人使用List

来自Sun

每个类变量,实例变量或数组组件在创建时都会使用默认值进行初始化(§15.9,§15.10):

  • 对于type字节,默认值为零,即(byte)0的值。
  • 对于short类型,默认值为零,即(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 = new int [50];

digit = new int[myString.length()];
这样你就可以创建一个等于你拥有的数字的int数组,并且不会有任何未初始化的条目。

暂无
暂无

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

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