• 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

    • Sorry, no - Data protection is solely the responsibility of the user. If you value the data, you have multiple copies.
    • Is this phone actually made in the USA?
    • Watchdog finds Microsoft guilty of confusing advertising when it comes to Copilot by Usama Jawad While Microsoft is advocating for Copilot usage in both personal and enterprise environments as much as possible, it arguably hasn't made as big of a splash as it wanted. Now, the U.S. watchdog National Advertising Division (NAD) has criticized Microsoft for some of its advertising practices when it comes to Copilot. In a recent blog post spotted by The Verge, NAD noted that Copilot does possess the functionalities that Microsoft expressly claims it does in enterprise use cases. This includes capabilities like summarization of content, generating text, and creating outlines for PowerPoint slide decks. While Copilot does have some limitations in this area, NAD thinks that they are pretty minor, so the lack of disclosure in this area doesn't really impact how most customers leverage Copilot. That said, the watchdog discovered some problems in Microsoft's messaging when it came to Business Chat. It believes that Redmond's universal and interchangeable use of Copilot for both the assistant and Business Chat can cause confusion among users, as they judge their functionalities. For example, NAD argues that while Copilot is quite fast at seamlessly generating documents in other applications, this is not the case with Business Chat, which requires more manual steps, and this is not abundantly clear in the advertising on Microsoft's website. Finally, NAD advised Microsoft to get rid of its claims regarding an increase in productivity and ROI because while the tech giant does have supporting studies to back its boasts, they do not provide a "good fit" for objective claims. It's also worth highlighting that the UK government recently did trial Copilot in work environments and discovered that participants did save 26 minutes per day on average. Still, it seems like this is not good enough for NAD. Interestingly, Microsoft did respond to NAD's advisory, saying that while it disagrees with some of the watchdog's findings, it has made changes to its advertising messages in order to comply with NAD's recommendations. Source: NAD via The Verge
    • My new emergency poo ticket holder
    • These are the same ignorant, gullible, cowardly fools who still believe that gods are real and that fictional White Jesus is coming back to Earth "any day now". It's a Venn-diagram of two almost perfectly concentric circles. In short, they'll buy anything you lie to them about as long as it makes them less afraid... Of things the rest of us know we don't have to be afraid of at all.
  • Recent Achievements

    • Experienced
      dismuter went up a rank
      Experienced
    • One Month Later
      mevinyavin earned a badge
      One Month Later
    • Week One Done
      rozermack875 earned a badge
      Week One Done
    • Week One Done
      oneworldtechnologies earned a badge
      Week One Done
    • Veteran
      matthiew went up a rank
      Veteran
  • Popular Contributors

    1. 1
      +primortal
      700
    2. 2
      ATLien_0
      268
    3. 3
      Michael Scrip
      213
    4. 4
      +FloatingFatMan
      186
    5. 5
      Steven P.
      143
  • Tell a friend

    Love Neowin? Tell a friend!