This is the problem in steps the final output is at the bott
This is the problem in steps the final output is at the bottom.
5.7 Program: Data visualization (Java)
(1) Prompt the user for a title for data. Output the title. (1 pt)
 
 Ex:
 (2) Prompt the user for the headers of two columns of a table. Output the column headers. (1 pt)
 
 Ex:
 (3) Prompt the user for data points. Data points must be in this format: string, int. Store the information before the comma into a string variable and the information after the comma into an integer. The user will enter -1 when they have finished entering data points. Output the data points. Store the string components of the data points in an ArrayList of strings. Store the integer components of the data points in a second ArrayList of integers. (4 pts)
 
 Ex:
 (4) Perform error checking for the data point entries. If any of the following errors occurs, output the appropriate error message and prompt again for a valid data point.
If entry has no comma
Output: Error: No comma in string. (1 pt)
If entry has more than one comma
Output: Error: Too many commas in input. (1 pt)
If entry after the comma is not an integer
Output: Error: Comma not followed by an integer. (2 pts)
 Ex:
 (5) Output the information in a formatted table. The title is right justified with a minimum of 33 characters. Column 1 is left justified with a minimum of 20 characters. Column 2 is right justified with a minimum of 23 characters. (3 pts)
 
 Ex:
 (6) Output the information as a formatted histogram. Each name is right justified with a minimum of 20 characters. (4 pts)
 
 Ex:
This is the preloaded code:
import java.util.Scanner;
 import java.util.ArrayList;
public class DataVisualizer {
    public static void main(String[] args) {
       /* Type your code here. */
     
       return;
    }   
 }
This is in a Java learnig program not an Java IDE. This question has been answered on chegg before but that code doesn\'t work, I has multiple errors acourding to the learning program. can someone please help me out with this. Thank you.
The code needs to output exactly as it shows above or it is considered incorrect.
Solution
// DataVisualizer.java
// Not including much comment as it just need to follow what is said in text
// in printf %-20s means left justified string by 20 char
// in printf %20s means right justified string by 20 char
import java.util.Iterator;
 import java.util.Scanner;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.ArrayList;
public class DataVisualizer {
 public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
      
    // Part 1
    System.out.print(\"Enter a title for the data: \");
    String title = sc.nextLine();
    System.out.println(\"You entered: \" + title);
      
    // part 2
    System.out.print(\"Enter the column 1 header: \");
    String header1 = sc.nextLine();
    System.out.println(\"You entered: \" + header1);
      
    System.out.print(\"Enter the column 2 header: \");
    String header2 = sc.nextLine();
    System.out.println(\"You entered: \" + header2);
   // part 3
    List<String> authorList = new ArrayList<>();
    List<Integer> countList = new ArrayList<>();
      
    while(true)
    {
        System.out.print(\"Enter a data point (-1 to stop input): \");
        if (sc.hasNextInt())
        {
            if(sc.nextInt() == -1)
                break;
        }
        String line = sc.nextLine();
        if (!line.contains(\",\"))
        {
            System.out.println(\"Output: Error: No comma in string.\");
            continue;
        }
          
        String[] parts = line.split(\",\");
        if (parts.length > 2)
        {
            System.out.println(\"Output: Error: Too many commas in input.\");
            continue;
        }
          
        int number;
        try
        {
            parts[1] = parts[1].trim();
            number = Integer.parseInt(parts[1]);
        }
        catch(Exception e)
        {
            System.out.println(\"Output: Error: Comma not followed by an integer.\");
            continue;
        }
          
        authorList.add(parts[0]);
        countList.add(number);
        System.out.println(\"Data string: \"+ parts[0]);
        System.out.println(\"Data integer: \" + number);
    }
      
    // part 5
    System.out.printf(\"%33s\ \", title);
    System.out.printf(\"%-20s\", header1);
    System.out.print(\"|\");
    System.out.printf(\"%23s\ \", header2);
      
    Iterator<String> i1 = authorList.iterator();
    Iterator<Integer> i2 = countList.iterator();  
    while (i1.hasNext() && i2.hasNext())
    {
        System.out.printf(\"%-20s\", i1.next());
        System.out.print(\"|\");
        System.out.printf(\"%23s\ \", i2.next());   
    }
      
    // part 6
    i1 = authorList.iterator();
    i2 = countList.iterator();  
    while (i1.hasNext() && i2.hasNext())
    {
        System.out.printf(\"%20s\", i1.next());
        System.out.print(\" \");
        int n = i2.next();
        for (int i = 0; i < n; i++)
        {
            System.out.print(\"*\");
        }
        System.out.println();   
    }
      
 }   
 }// Code end here
/*
Sample run
Enter a title for the data: Number of Novels Authored
 You entered: Number of Novels Authored
 Enter the column 1 header: Author name
 You entered: Author name
 Enter the column 2 header: Number of novels
 You entered: Number of novels
 Enter a data point (-1 to stop input): Jane Austen, 6
 Data string: Jane Austen
 Data integer: 6
 Enter a data point (-1 to stop input): Ernest Hemingway 9
 Output: Error: No comma in string.
 Enter a data point (-1 to stop input): Ernest, Hemingway, 9
 Output: Error: Too many commas in input.
 Enter a data point (-1 to stop input): Ernest Hemingway, nine
 Output: Error: Comma not followed by an integer.
 Enter a data point (-1 to stop input): Charles Dickens, 20
 Data string: Charles Dickens
 Data integer: 20
 Enter a data point (-1 to stop input): Ernest Hemingway, 9
 Data string: Ernest Hemingway
 Data integer: 9
 Enter a data point (-1 to stop input): Jack Kerouac, 20
 Data string: Jack Kerouac
 Data integer: 20
 Enter a data point (-1 to stop input): F. Scott Fitzgerald, 8
 Data string: F. Scott Fitzgerald
 Data integer: 8
 Enter a data point (-1 to stop input): Mary Shelley, 7
 Data string: Mary Shelley
 Data integer: 7
 Enter a data point (-1 to stop input): Charlotte Bronte, 5
 Data string: Charlotte Bronte
 Data integer: 5
 Enter a data point (-1 to stop input): Mark Twain, 11
 Data string: Mark Twain
 Data integer: 11
 Enter a data point (-1 to stop input): Agatha Christie, 73
 Data string: Agatha Christie
 Data integer: 73
 Enter a data point (-1 to stop input): Ian Flemming, 14
 Data string: Ian Flemming
 Data integer: 14
 Enter a data point (-1 to stop input): J.K. Rowling, 14
 Data string: J.K. Rowling
 Data integer: 14
 Enter a data point (-1 to stop input): Stephen King , 54
 Data string: Stephen King
 Data integer: 54
 Enter a data point (-1 to stop input): Oscar Wilde, 1
 Data string: Oscar Wilde
 Data integer: 1
 Enter a data point (-1 to stop input): -1
 Number of Novels Authored
 Author name | Number of novels
 Jane Austen | 6
 Charles Dickens | 20
 Ernest Hemingway | 9
 Jack Kerouac | 20
 F. Scott Fitzgerald | 8
 Mary Shelley | 7
 Charlotte Bronte | 5
 Mark Twain | 11
 Agatha Christie | 73
 Ian Flemming | 14
 J.K. Rowling | 14
 Stephen King | 54
 Oscar Wilde | 1
 Jane Austen ******
 Charles Dickens ********************
 Ernest Hemingway *********
 Jack Kerouac ********************
 F. Scott Fitzgerald ********
 Mary Shelley *******
 Charlotte Bronte *****
 Mark Twain ***********
 Agatha Christie *************************************************************************
  Ian Flemming **************
 J.K. Rowling **************
 Stephen King ******************************************************
 Oscar Wilde *
*/





