All right, Two-dimensional Arrays 8.1 Part 2. This is all very quick, and most of it's pretty good. Just a little tip, tiny little helping hand and just to let you know that the programming challenge is a mess, because it uses something we're about to cover on the next page. But it's kind of interesting, but you could save it. All right, so we've declared values, declared two-dimensional arrays and talked about how they're stored, which we really didn't want to talk about it turns out. But there you are. Next, we're going to talk about setting values in two-dimensional arrays and, of course, getting calls from them. And, again, we could basically say, kids, it just works exactly like arrays. Okay, there's nothing new actually, here. So the key things that they point out, if you try to print out the contents of by just printing the name variable, which, by the way, is not something I even think they tried to have them do in arrays. But since we were doing it with an array list, that'll be something, because we'd be like, I can just like print the variable name. Nope, it'll actually print the reference in memory to where that array of the insert strings or whatever is, okay? So that's the key to that part there. And the teacher tip, to in order to actually print out what's in there, all of the arrays, we're going to need nested loops. And we'll be going into that in 8.2. There's a good question here, though. And, again, just pointing out that remember we start counting by 0s, which of the following sets the value for the third row second column. That would be indexed [2][1], right, because we start at 0. Initializing 2D arrays can be done like initialize int. Again, we can say it's just like arrays, but it's a little bit different here. And it looks a little weird. With an array, we'd have a single set of curly braces and just a list of values. But now we put each row in its own set of curly braces, and the whole shebang is got a curly brace around it. So in fact, it'd be nice to have these diagrams to say, look, that ticketing info, that's how it would be displayed up there and a note that 25, 20, 25 is the first row. Jeez, they use the exact same example from the bottom one. That wasn't very nice. Maybe I'll get that changed. And then down on the bottom, then we can make it really clear. We have a two column, three rows. See how there's two in each of the sets? And so that gets initialized as the following. So feel free to grab screenshots of those if that's helpful for you. If you want to get a value out of an array, again, we're just going to need to give two indices, the row index and the column index. So 0,1 out of the seatingInfo that would get us Maria, 0th Row, 0 first column. And then they say there's an activity we'd like you to add a row to the seating info to initialize to your name and a friend's name, okay. So here is the original seating info. It has three rows, two columns each. To add one in, you're going to need to add a comma after the last row, but inside before the last curly bracket. And I encourage kids to put each row on its own line. It just makes it easier to read, okay. So then I put {myName, myName2}, and I missed the quotes in there. You can tell I didn't compile it. Always compile your code. Your kids will catch you out. You just caught me out. So it should be {"myName", "myName2"}. Do as I say, not as I do. Learn from my mistakes, whatever you like. About the asciiArt challenge, it's kind of cute. It's fun. You probably can't even tell by looking at it, but that's going to print out a cute little owl. And it is interesting, but it's not actually really, it's not really pushing on any of the things we really learned. It can be fun. It also uses stuff that we're not actually learning till the next page. So really, if you need to make up some time, totally skip this one.