• 0

[Java: Arrays] Using printf


Question

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:

post-67678-0-89881600-1299211348.jpg

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("\tayScaleTable[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

7 answers to this question

Recommended Posts

  • 0

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.

  • 0

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("Summerrnship Salary Information: "); 
			  System.out.print("\t\t		  while (numberOfYears >= printYears) {		

			  		System.out.printf("Year\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\tayScaleTable[row][col]);	
						System.out.println();
      		}

If that code is run, over time the year and the numbers start to get slowly separated. Like this:

post-67678-0-60715600-1299354142.jpg

  • 0

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.

  • 0

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.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Source: Reuters Clearly, not everyone cares about its CEO's shenanigans. 
    • Sgt Klinger just sounds wrong. I know he made sergeant before end of show, but will always know him as Corporal Klinger. Very sad to hear of Loretta's passing. She definitely helped make the show what it was. 
    • For some reason, Neowin has now pulled this disclaimer pointing out that this survey is utterly useless since it doesn't track the same user data over time (even though Valve has the real information, of course). What it really tracks, without revealing it, is what games are popular each month, who is too busy to answer a dumb survey from month to month, and which cultures (e.g. the Chinese are primarily on expired W10 machines) are gaming in force from wave to wave on whatever game is in vogue at the time. Therefore, these specific surveys, being voluntary and non-consistent, remain nothing but worthless clickbait garbage. They tell us nothing of useful substance regarding actual trends over time.
    • For some reason, Neowin has now pulled this disclaimer pointing out that this survey is utterly useless since it doesn't track the same user data over time (even though Valve has the real information, of course). What it really tracks, without revealing it, is what games are popular each month, who is too busy to answer a dumb survey from month to month, and which cultures (e.g. the Chinese are primarily on expired W10 machines) are gaming in force from wave to wave on whatever game is in vogue at the time. Therefore, these specific surveys, being voluntary and non-consistent, remain nothing but worthless clickbait garbage. They tell us nothing of useful substance regarding actual trends over time.
    • Microsoft will not prevent Windows 11 24H2 or 25H2 or 26H2 from stopping working on those who do not have NPU. This is something very specific to those who want to use Copilot+, only for content creators. Windows 11 works on all hardware released since 2019. It's been 6 years. Any 6-year-old PC has full support for Windows 11. NPU is already standard on mobile phone CPUs and will now be a new standard on PC and notebook CPUs.
  • Recent Achievements

    • Week One Done
      Epaminombas earned a badge
      Week One Done
    • Week One Done
      Prestige Podiatry Care earned a badge
      Week One Done
    • Week One Done
      rollconults earned a badge
      Week One Done
    • One Month Later
      lilred1938 earned a badge
      One Month Later
    • Week One Done
      lilred1938 earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      132
    2. 2
      Xenon
      131
    3. 3
      ATLien_0
      123
    4. 4
      +Edouard
      103
    5. 5
      snowy owl
      94
  • Tell a friend

    Love Neowin? Tell a friend!