Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

(1) Prompt the user for a title for data. Output the title. (1 pt) Ex: (2) Promp

ID: 3717234 • Letter: #

Question

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

import java.util.Scanner;
import java.util.ArrayList;

public class DataVisualizer {
public static void main(String[] args) {
/* Type your code here. */
  
return;
}
}

Explanation / Answer

DataVisualizer.java

import java.util.Scanner;
import java.util.ArrayList;

public class DataVisualizer {
public static void main(String[] args) {
//Declaring variables
String title, col1Header, col2Header;

/*
* Creating an Scanner class object which is used to get the inputs
* entered by the user
*/
Scanner sc = new Scanner(System.in);

//Creatingan ArrayList which holds Strings and Integers
ArrayList < String > names = new ArrayList < String > ();
ArrayList < Integer > numbers = new ArrayList < Integer > ();

//Getting the input entered by the user
System.out.print("Enter a title for the data: ");
title = sc.nextLine();
System.out.println("You entered: " + title);

//Getting the input entered by the user
System.out.print(" Enter the column 1 header: ");
col1Header = sc.nextLine();
System.out.println("You entered: " + col1Header);


//Getting the input entered by the user
System.out.print(" Enter the column 2 header: ");
col2Header = sc.nextLine();
System.out.println("You entered: " + col2Header);


//Getting the input entered by the user
System.out.print("Enter a data point (-1 to stop input):");
String line = sc.nextLine();


/* This while loop continues to execute
* until the user enters -1 or invalid String as input
*/
while (!line.equals("-1")) {


int n = checkValid(line);
if (n == 1) {
System.out.println("Error: No comma in string.");
} else if (n == 2) {
System.out.println("Error: Too many commas in input.");
} else if (n == 3) {
System.out.println("Error: Comma not followed by an integer.");
} else if (n == 0) {
String arr[] = line.split(",");
String num = arr[1].trim();
int val = Integer.parseInt(num);
names.add(arr[0]);
numbers.add(val);
}
System.out.print("Enter a data point (-1 to stop input):");
line = sc.nextLine();

}

//Displaying the table
System.out.printf("%33s ", title);
System.out.printf("%-20s|%23s ", col1Header, col2Header);
System.out.println("------------------------------------");
for (int i = 0; i < names.size(); i++) {
System.out.printf("%-20s|%23d ", names.get(i), numbers.get(i));
}


System.out.println();
//Displaying the Histogram
for (int i = 0; i < names.size(); i++) {
System.out.printf("%20s", names.get(i));
for (int j = 0; j < numbers.get(i); j++) {
System.out.print("*");
}
System.out.println();
}

}

//This method will check whether the user entered Inout is valid or not
private static int checkValid(String line) {
int flag = 0, count = 0;

for (int i = 0; i < line.length(); i++) {
if (line.charAt(i) == ',') {
flag = 1;
count++;
}
}
if (flag == 1 && count == 1) {
String arr[] = line.split(",");
String num = arr[1].trim();
try {
int val = Integer.parseInt(num);
} catch (Exception e) {
flag = 2;
}

}

if (flag == 0)
return 1;
else if (flag == 1 && count > 1)
return 2;
else if (flag == 2)
return 3;
else
return 0;
}
}

__________________

Output:

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):Ernest Hemingway 9
Error: No comma in string.
Enter a data point (-1 to stop input):Ernest, Hemingway, 9
Error: Too many commas in input.
Enter a data point (-1 to stop input):Ernest Hemingway, nine
Error: Comma not followed by an integer.
Enter a data point (-1 to stop input):Jane Austen, 6
Enter a data point (-1 to stop input):Charles Dickens, 20
Enter a data point (-1 to stop input):Ernest Hemingway, 9
Enter a data point (-1 to stop input):Jack Kerouac, 22
Enter a data point (-1 to stop input):F. Scott Fitzgerald, 8
Enter a data point (-1 to stop input):Mary Shelley, 7
Enter a data point (-1 to stop input):Charlotte Bronte, 5
Enter a data point (-1 to stop input):Mark Twain, 11
Enter a data point (-1 to stop input):Agatha Christie, 73
Enter a data point (-1 to stop input):Ian Flemming, 14
Enter a data point (-1 to stop input):J.K. Rowling , 14
Enter a data point (-1 to stop input):Stephen King, 54
Enter a data point (-1 to stop input):Oscar Wilde, 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 | 22
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*

_______________Thank You