Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 5 of 5
  1. #1
    New to the CF scene
    Join Date
    Mar 2012
    Location
    In your shadow.
    Posts
    1
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Exclamation Unexpected Output from a 2D Array

    Hey guys, B00mer here.

    So, was just coding and messing around with 2 dimensional arrays to kinda get a better understanding of it and also to be able to manipulate it and do some other stuff with it. However, upon compiling and running the 2D array to output all its contents after it had already been populated during compile, it game me some crazy numbers, instead of the ones I was looking for. And I for the life of me cannot understand why. So I thought you guys might be able to help. The simple code is as follows:

    Code:
    public class nbyn {
       
        public static void main(String[] args) {
            
            //Array Box A
            int [][] a = new int[][]{
                { '1', '2', '3' },
                { '4', '5', '6' },
                { '7', '8', '9' },
            };
            
            //Array Box B - Ignore this one for now, nothing happening with it
            int [][] b = new int[][]{
                { '1', '2', '3' },
                { '4', '5', '6' },
                { '7', '8', '9' },
            };
            
            int i, j;
            //traverse the array 'a' and output all its contents
            for (i=0; i < a.length; i++) {
                for (j=0; j < a[i].length; j++) {
                    System.out.print(" " + a[i][j]);
                }
                System.out.println("");
            }  
        }  
    }
    So the output I was expecting was:
    Code:
    1, 2, 3, 4, 5, 6, 7, 8, 9
    Instead I get this:
    Code:
    run:
     49 50 51
     52 53 54
     55 56 57
    BUILD SUCCESSFUL (total time: 0 seconds)
    Any explanation of how this output came to being, and also a bit of help on what I NEED to do in order to get the output I want, would be amazingtastik.

    Danke.

    -B00mer

  • #2
    God Emperor Fou-Lu's Avatar
    Join Date
    Sep 2002
    Location
    Saskatoon, Saskatchewan
    Posts
    16,994
    Thanks
    4
    Thanked 2,662 Times in 2,631 Posts
    Those int representations for chars. 1 - 9 is 49 - 57 inclusive.

  • #3
    Senior Coder alykins's Avatar
    Join Date
    Apr 2011
    Posts
    1,927
    Thanks
    46
    Thanked 203 Times in 202 Posts
    this ascii chart might help you understand better- look at the red 1,2,3... etc and then look at the Dec value of it- you are getting the conversion of the char-> int ... I am surprised though that it did not error out on a bad type

    I code C hash-tag .Net
    Reference: W3C W3CWiki .Net Lib
    Validate: html CSS
    Debug: Chrome FireFox IE

  • #4
    Gox
    Gox is offline
    Regular Coder Gox's Avatar
    Join Date
    May 2006
    Location
    Ontario, Canada
    Posts
    392
    Thanks
    2
    Thanked 20 Times in 20 Posts
    I believe you need to remove the single quotes in your array instantiation.

    i.e.
    Code:
    int[] anArray = { 
        100, 200, 300,
        400, 500, 600, 
        700, 800, 900, 1000
    };

  • #5
    God Emperor Fou-Lu's Avatar
    Join Date
    Sep 2002
    Location
    Saskatoon, Saskatchewan
    Posts
    16,994
    Thanks
    4
    Thanked 2,662 Times in 2,631 Posts
    It won't error out since its not technically a bad type. A char is just a byte, and a byte is a lower "quality" primitive than the int. So you can always stick a lower quality primitive into a "higher" datatype, and more often than not without an explicit conversion.
    Effectively, if you can stuff a value into a variable without losing precision, it will attempt to implicitly cast the value to match it. Byte -> Short Int -> Int -> long Int -> float -> double, but you cannot go the other way. This is the same behaviour that C follows.


  •  

    Tags for this Thread

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •