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;
}
}