+Mystic MVC Posted March 4, 2011 MVC Share Posted March 4, 2011 I am trying to using the prinf method while printing values of an array. Below is an example of what I'm trying to obtain in formatting output: Here is a snippet of code I'm trying to use the printf method with: for (int row=0; row < payScaleTable.length; row++) { System.out.print("Person #" + printPerson); printPerson = printPerson + 1; for (int col=0; col < payScaleTable[row].length; col++) System.out.print("\t" + payScaleTable[row][col] + "\t"); System.out.println(); } Anytime I start adding the prinf method to that statement inside the for loop, I start getting "Array out of bounds" errors. Link to comment https://www.neowin.net/forum/topic/980160-java-arrays-using-printf/ Share on other sites More sharing options...
0 Andre S. Veteran Posted March 4, 2011 Veteran Share Posted March 4, 2011 The code you posted is correct. Out-of-bounds error would have nothing to do with the use of printf. Could you show how you use printf, i.e. the code that causes the out-of-bounds error? A possible source of bugs here is the variable printPerson, which duplicates row as a loop counter. Consider eliminating printPerson and using row instead. Link to comment https://www.neowin.net/forum/topic/980160-java-arrays-using-printf/#findComment-593756580 Share on other sites More sharing options...
0 Argote Posted March 4, 2011 Share Posted March 4, 2011 As Dr_Asik mentioned, the code seems to be correct and should not be throwing any ArrayIndexOutOfBounds exceptions. Link to comment https://www.neowin.net/forum/topic/980160-java-arrays-using-printf/#findComment-593756600 Share on other sites More sharing options...
0 kjordan2001 Posted March 4, 2011 Share Posted March 4, 2011 The exception being thrown should point you to which line is having problems. Link to comment https://www.neowin.net/forum/topic/980160-java-arrays-using-printf/#findComment-593757684 Share on other sites More sharing options...
0 +Mystic MVC Posted March 5, 2011 Author MVC Share Posted March 5, 2011 Ok, I'm off to a slightly better start now but I'm still having trouble keeping everything aligned in the long run. For example if you look at the very top of the first picture I posted (what the output should actually be), I can't seem to keep things aligned in the long run. For example here is what I have so far when trying to get that first block. System.out.println("Summer Internship Salary Information: "); System.out.print("\t\t"); while (numberOfYears >= printYears) { System.out.printf("Year #%d \t", printYears); printYears = printYears + 1; } System.out.println(""); for (int row=0; row < payScaleTable.length; row++){ for (int col=0; col < payScaleTable[row].length; col++) payScaleTable[row][col] = 1000 + (int)(Math.random() * ((20000 - 1000) + 1)); } for (int row=0; row < payScaleTable.length; row++) { System.out.print("Person #" + printPerson + "\t"); printPerson = printPerson + 1; for (int col=0; col < payScaleTable[row].length; col++) System.out.printf("$%,6d\t\t ", payScaleTable[row][col]); System.out.println(); } If that code is run, over time the year and the numbers start to get slowly separated. Like this: Link to comment https://www.neowin.net/forum/topic/980160-java-arrays-using-printf/#findComment-593760860 Share on other sites More sharing options...
0 kjordan2001 Posted March 5, 2011 Share Posted March 5, 2011 I notice you're using 2 tabs between amounts, but only one tab between years. You've also got a trailing space after the 2 tabs in the amounts. Link to comment https://www.neowin.net/forum/topic/980160-java-arrays-using-printf/#findComment-593760902 Share on other sites More sharing options...
0 +Mystic MVC Posted March 5, 2011 Author MVC Share Posted March 5, 2011 It is amazing how easily I have been missing tiny little things like that which end up making a huge difference. Can I get rid of the extra space between the $ and the numbers if it is a number like $ 1,799? I know I have a 6 built into the printf method, but I just thought I would ask because it would look cleaner if for example I had $1,799 instead of $ 1,799. Link to comment https://www.neowin.net/forum/topic/980160-java-arrays-using-printf/#findComment-593760932 Share on other sites More sharing options...
0 Andre S. Veteran Posted March 6, 2011 Veteran Share Posted March 6, 2011 The '$' is not part of the number so it's not right-aligned like the number is. Off the top of my head, I'd say you could pre-convert the number to a string, insert the '$' at the beginning and then output the whole thing right-aligned, as a string. See http://download.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html for all the details, maybe there's an even better solution there. Link to comment https://www.neowin.net/forum/topic/980160-java-arrays-using-printf/#findComment-593761736 Share on other sites More sharing options...
Question
+Mystic MVC
I am trying to using the prinf method while printing values of an array. Below is an example of what I'm trying to obtain in formatting output:
Here is a snippet of code I'm trying to use the printf method with:
Anytime I start adding the prinf method to that statement inside the for loop, I start getting "Array out of bounds" errors.
Link to comment
https://www.neowin.net/forum/topic/980160-java-arrays-using-printf/Share on other sites
7 answers to this question
Recommended Posts