Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert String to int array

I have an int array that holds a single digit in each index so that once printed out, it displays a long number. Ex: digit = {1, 2, 3, 4, 5} would look like 12345.

I have a method that takes a string as parameter and puts the numbers it gets from the string into the digit array. It looks like this:

digit = new int [50];

for (int i = 0; i < myString.length(); i++)

{digit[i] = Character.digit(myString.charAt(i), 10)};

Now when I pass these two strings to the function:

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

I get

12345678901234567890123456789012345678900000000000

1234567890123456789012345678901234560000000000

Can somebody explain to me why those trailing zeros are there?

like image 750
birdonawire Avatar asked Jul 01 '26 16:07

birdonawire


2 Answers

Your array can contain 50 items. However, the strings you're passing in are less than 50 digits. Creating a new array will initialize every item in it with its default value. In this case, it's an integer so the default value is 0. That's why you're getting the trailing zeros.

It sounds like what you want is a collection instead of an array. I don't know what collection types Java has but in C#, most people use a List.

like image 98
Daniel T. Avatar answered Jul 03 '26 06:07

Daniel T.


From Sun:

Each class variable, instance variable, or array component is initialized with a default value when it is created (§15.9, §15.10):

  • For type byte, the default value is zero, that is, the value of (byte)0.
  • For type short, the default value is zero, that is, the value of (short)0.
  • For type int, the default value is zero, that is, 0.
  • For type long, the default value is zero, that is, 0L.
  • For type float, the default value is positive zero, that is, 0.0f.
  • For type double, the default value is positive zero, that is, 0.0d.
  • For type char, the default value is the null character, that is, '\u0000'.
  • For type boolean, the default value is false.

All of the ints in the array are being initialized to 0 when you create it, but the ones at the end are not being overwritten (since the number you put into the array was less than 50 digits).

like image 38
eldarerathis Avatar answered Jul 03 '26 05:07

eldarerathis



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!