Hello All,
I am currently working on a assignment where we have to input a number of students, generate (either randomly with a gaussean distribution or via user input) a test score of 1-100 for each student, and then print a histogram that represents the scores. The scores are broken down in to ranges of 10 (1-10, 11-20, 21-30, etc.) and for each grade within each range the program prints out an asterix ("*"). I have completed my assignment where it prints out all of the test scores and prints the histogram horizontally (the first row is range 1-10: *****, the second row is range 11-20: **, etc.
Now that my assignment is over I am trying to mess around with the program and figure out how prinit it vertically, so that there will be a row at the bottom of the graph that displays the grade ranges, and the asterixes are printed vertically above each group. Unfortunately, I just cannot figure this out. I would greatly appreciate any help and advice that anyone can give.
Take care and have a great day....
ciao,
john.
Here is my code:
import javax.swing.*; import java.util.*; import java.text.*; public class assignment6 { public static void main (String[] args) { String continueOption; do { int n = 1; int pupils = 1; int [] scores = new int [10]; String msg1 = "How many students are there in the class?"; String msg2 = "Please input a positive number."; String msg3 = "Would you like to input numbers from the Console" + "or have the computer Randomly generate for you?" + "\n" + "(Enter \"C\" for Console Input or \"R\" for Random Generation)"; String msg4 = "Would you like to repeat? (Y/N)"; String msg5 = "Thank you for using this Teaching Aid." + "\n" + "We hope all your students were paying attention and passed." + "\n" + "Have a great summer, Professor Gordon!"; do { pupils = Integer.parseInt(JOptionPane.showInputDialog(msg1)); if (pupils <= 0) { JOptionPane.showMessageDialog(null,msg2); } } while (pupils <= 0); String choice = JOptionPane.showInputDialog(msg3); if ((choice.charAt(0)=='C') || (choice.charAt(0)=='c')) scores = userNum(pupils); else { if(( choice.charAt(0)=='R') || (choice.charAt(0)=='r')) scores = randomNum(pupils); } histogram(scores); continueOption = JOptionPane.showInputDialog(msg4); if (continueOption.equals("n") || continueOption.equals("N")) { JOptionPane.showMessageDialog(null, msg5, "Thank you message", JOptionPane.INFORMATION_MESSAGE); System.exit(0); } System.out.println("\n"); } while(continueOption.equals("y") || continueOption.equals("Y")); } public static int[] userNum(int n) { int i, num; int [] list = new int [10]; String msg6 = "Please enter the score between 1-100."; String msg7 = "The input is wrong, Please enter the score between 1-100."; System.out.print("Test Scores:"); for (i = 0; i < n; i++) { num = Integer.parseInt( JOptionPane.showInputDialog(msg6)); if ((num < 1) || (num > 100)) { do { num = Integer.parseInt( JOptionPane.showInputDialog(msg7)); } while ((num < 1) || (num > 100)); } if (i%10 == 0) {System.out.println();} System.out.print(num + " "); int value = (((int)num)-1)/10; list [value]++; } return list; } public static int [] randomNum(int n) { int [] list = new int[10]; Random generator = new Random(); int i; double num = 0; System.out.print("Test Scores:"); for(i = 0; i < n; i++) { do { num = generator.nextGaussian(); num *= 15; num += 60; } while ((num < 1) || (num > 100)); int conversion = (int)num; if (i%10 == 0) {System.out.println();} System.out.print( " " + conversion); int value = (conversion-1)/10; list [value]++; } return list; } public static void histogram(int [] scores) { int i = 0; int index; double max; int result, key; System.out.println("\n" + "\n" + "Histogram:"); for(i = 0; i < 10; i++) { int asterix = scores[i]; System.out.print(String.format("%2d", ((i*10)+1)) + " - " + String.format("%3d", ((i+1)*10)) + ": "); { for(int k = 0; k < asterix ; k++) System.out.print("*"); } System.out.println(); } System.out.println(); /** //************************************************************ //Finding the largest group of scores result = findLargest(scores,0,scores.length); System.out.println(result); System.out.println(scores[result]); //Largest group found! //************************************************************ **/ } /** //************************************************************ //Finding the largest group of scores public static int findLargest(int [ ] list,int start, int n) { int largest = start; for(int i = start+1;i<n;++i) if (list[i] > list[largest]) largest = i; return largest; } //Largest group found! //************************************************************ **/ }