1. Polling Write a simple polling program that allows users to rate 5 issues from 1 (low importance) to 10 (high importance). Read in the five causes from a file (you can use the causes.txt file under HOMEWORK

Respuesta :

Answer:

Answer explained below

Explanation:

import java.nio.charset.StandardCharsets;

import java.io.*;

import java.util.*;

public class Polling{

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

String [] causeList = new String[5];

causeList = readCauses();

System.out.println("Enter number of polls");

int numpoll = in.nextInt();

int [][] pollResults = new int[5][numpoll];

pollResults = performSurvey(causeList,numpoll);

int[] causesSum = calcCausesSums(pollResults);

double[] averageForCause = calcAverage(causesSum,numpoll);

reportResults(causeList, pollResults, averageForCause);

}

public static String[] readCauses(){

String[] causes = new String[5];

int i=0;

try {

Scanner scanner = new Scanner(new File("causes.txt"));

// Read lines from the file

while(scanner.hasNextLine()) {

causes[i]=scanner.nextLine();

i++;

}

scanner.close();

}

catch (FileNotFoundException e) {

e.printStackTrace();

}

return causes;

}

public static int[][] performSurvey(String[] causes, int num){

Scanner in = new Scanner(System.in);

int[][] results = new int[5][num];

for (int j=0;j<num;j++){

System.out.println("Enter ratings for importance\nPoll "+ (j+1));

for(int i=0;i<5;i++){

System.out.print(causes[i]+" ");

int value = in.nextInt();

if(value>0 && value <=10)

results[i][j]=value;

else{

System.out.println("Invalid rating. Please try again");

i--;

continue;

}

}

}

return results;

}

public static int[] calcCausesSums(int [][] results){

int col = results[0].length;

int[] sum= new int[5];

for(int i=0;i<5;i++){

for(int j=0;j<col;j++){

sum[i]+=results[i][j];

}

}

return sum;

}

public static double[] calcAverage(int [] sum,int num){

double[] avg= new double[5];

for(int i=0;i<5;i++){

avg[i]=sum[i]/num;

}

return avg;

}

public static void reportResults(String[] causes, int [][]results, double[] average)

{

int col = results[0].length;

System.out.println("Enter filename to save output with extension .txt");

Scanner in = new Scanner(System.in);

String filename = in.next();

File file = null;

try {

file = new File(filename);

/*If file gets created then the createNewFile()

* method would return true or if the file is

* already present it would return false

*/

boolean fvar = file.createNewFile();

if (fvar){

System.out.println("File has been created successfully");

}

else{

System.out.println("File already present at the specified location");

}

} catch (IOException e) {

System.out.println("Exception Occurred:");

e.printStackTrace();

}

 

// write data to file

try (PrintWriter out = new PrintWriter(file, StandardCharsets.UTF_8.name())) {

out.print("Polling Results\n");

out.print("Causes\tPolled Person\tAverage\n");

out.print("\t\t\t\t");

for(int i=0;i<col;i++)

out.print((i+1)+" ");

out.print("\n");

for(int i=0;i<5;i++){

out.print(causes[i]+"\t\t");

for (int j = 0;j<col;j++){

out.print(results[i][j]+"\t");

}

out.print(average[i]+"\n");

}

 

int min = findMinCause(average);

int max =findMaxCause(average);

 

String maxsentence = " The " + causes[max] + " with an average rating of " +average[max]+" is the highest rated cause";

String minsentence = " The " + causes[min] + " with an average rating of " +average[min]+" is the lowest rated cause";

out.print("\n"+maxsentence+"\n"+minsentence);

System.out.println("Successfully written data to the file");

} catch (IOException e) {

e.printStackTrace();

}

}

public static int findMaxCause(double[] average){

int index = 0;

double max=0;

for(int i=0;i<5;i++)

if(average[i]>max){

max=average[i];

index=i;

}

return index;

}

public static int findMinCause(double[] average){

int index = 0;

double min=average[0];

for(int i=0;i<5;i++)

if(average[i]<min){

min=average[i];

index=i;

}

return index;

}

}

ACCESS MORE