• 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("\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

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("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:

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

    • Over regulation is bad. That's why the EU is behind the US. But, it's a good thing the EU stepped in, in this case.
    • Thanks to the EU, Windows 11 is now a little more tolerable.
    • Microsoft will finally stop shoving Edge down your throat, on one condition by David Uzondu Avid Windows users must be familiar with the dirty tactics Microsoft employs to push its Edge browser. It's a song as old as time; remember when Internet Explorer was primarily used as a tool to download Chrome or Firefox because it was the only thing available? Shortly after IE died, Edge inherited that legacy, becoming the browser you often had to use just to get the browser you actually wanted. Even Microsoft knows this: For years, we have endured the relentless pop-ups after updates, third parties being blocked from changing the default browser on Windows 11, banners appearing when you dare visit a competitor's download page, a fake "how to uninstall Edge" guide, and links within Windows apps that just had to open in Edge, regardless of your set preferences. Microsoft has announced it is dialing back some of this aggressive behavior, promising a reprieve from the constant Edge bombardment. But (and it's a pretty big but) this only applies if you're in the EEA. This shift isn't Microsoft suddenly having a profound change of heart and deciding to respect user choice out of the goodness of its heart. No, this is all thanks to the Digital Markets Act, a major EU rule that targets big online platforms, what they call "gatekeepers", because these companies have a huge impact on how the digital market works. So, what is actually changing for users in the EEA? For starters, Microsoft Edge will not prompt you to set it as the default browser unless you actually open it directly, like by clicking its icon on the taskbar. This specific change started rolling out with Edge version 137.0.3296.52. Other Microsoft apps will also stop bugging you to reinstall Edge if you dared to remove it, with updates for this rolling out in June to Windows 10 and 11. And speaking of default browsers, this is where a significant improvement lies. Previously, hitting "Set default" for your browser in Windows was half baked, only grabbing basic web links like http and https and HTML files. Now, if you're in the EEA, setting your default browser will also cover more obscure link types like ftp and "read," plus a wider array of web-related file formats such as .mht, .svg, .xml, and even .pdf files, provided your chosen browser says it can handle them. The Bing app and those Windows Widgets, which previously had a nasty habit of ignoring your browser choice, will also start opening web links in your default browser. Hallelujah. Users in the EEA will also gain the ability to uninstall the Microsoft Store entirely later this year, though apps previously installed from it will still receive updates. Windows Search is also getting an upgrade in the EEA. Right now, searching from the taskbar mostly just sends you to Bing, no matter what browser you use. But for users in the EEA, other apps will be able to plug into Windows Search and show web results too. If an app registers as a web search provider, it'll start working as soon as you install it. You'll also be able to see results from multiple providers in the search interface, not just Bing. The usual scoping tabs will still be there if you want to filter things, but the default view will be more varied. And yes, you'll even be able to reorder the providers in Settings. These changes are already in Windows Insider builds and are expected to roll out to Windows 10 and 11 in early June.
    • A few things I am wondering about for S3: A.  What's Pike doo gonna look like this time around....yea I've watched the trailers & it looks poofed up, but still.... B. When will the unintelligible, physco-babbling Pelia go away (or at least learn how to speak English properly, without that crappy, slurred accent that sounds like she's on crack, Mary Jane, & LSD at the same time) ?  Hopefully Scotty's arrival will mean her departure is near.... C.  When do we get to see more of the stunningly gorgeous No. 1, preferably in regular/civilian clothes that show off her physical attributes better ? D. Is Spock EVER gonna get laid properly, human style ?  I feel certain that Christine could make any Vulcan-human horizontal bomp a thing to remember for a LONG time  E.  Can we PLEEEEEEZE get rid of the hatchet-head/buzz cut hair styles on Ortega & anyone else that has it....  But otherwise, as Pike says:  HIT IT !  
  • Recent Achievements

    • One Year In
      WaynesWorld earned a badge
      One Year In
    • First Post
      chriskinney317 earned a badge
      First Post
    • Week One Done
      Nullun earned a badge
      Week One Done
    • First Post
      sultangris earned a badge
      First Post
    • Reacting Well
      sultangris earned a badge
      Reacting Well
  • Popular Contributors

    1. 1
      +primortal
      172
    2. 2
      ATLien_0
      124
    3. 3
      snowy owl
      123
    4. 4
      Xenon
      118
    5. 5
      +Edouard
      92
  • Tell a friend

    Love Neowin? Tell a friend!