输入文本文件中的最小最大值和平均值

时间:2017-11-23 15:41:52

标签: java max average min

现在已经有很长一段时间从事这项家庭作业,似乎无法得到  答案,我的代码的一些反馈将不胜感激。  我有一个输入文本文件,其中包含以下内容

Min: 1,2,3,5,6
     Max: 1,2,3,5,6
Avg: 1,2,3,5,6
    P90: 1,2,3,4,5,6,7,8,9,10
Sum: 1,2,3,5,6
    P70: 1,2,3

我的任务是读取输入文本文件并创建一个输出文本文件  内容如下:

The min of [1,2,3,5,6] is 1.
    The max of [1,2,3,5,6] is 6.
The avg of [1,2,3,5,6] is 3.4.
    The 90th percentile of [1,2,3,4,5,6,7,8,9,10] is 9.
The sum of [1,2,3,5,6] is 17.
    The 70th percentile of [1,2,3] is 2.

到目前为止,我只是尝试min max和avg,我可以读取文件,但我可以  输出我读的内容。  我不知道如何找到min max avg等并输出这些值。似乎是  因为我的输入是一个字符串,我只需要读取int值。  这是我的代码

import java.io.File;
import java.util.Formatter;
import java.util.Scanner;

public class ExternalData {

public static void main(String[] args) {

    try {
        System.out.print("Enter the file name with extension : ");

        Scanner input = new Scanner(System.in);

        File file = new File(input.nextLine());

        input = new Scanner(file);

        while (input.hasNextLine()) {
            int min = input.nextInt();
            while(input.hasNextInt());
            int num = input.nextInt();
            if(num < min) {
                min = num;
            }

            while (input.hasNextLine()) {
                int max = input.nextInt();
                while(input.hasNextInt());
                int num2 = input.nextInt();
                if(num2 > min) {
                    min = num;

            String avg = input.nextLine();




            Formatter f = new Formatter("C:\\Users\\Kevin\\Dropbox\\Kevin 
            Carter-8042\\Intro to Soft Eng\\Task 12\\outputTest.txt");

            // print the formatted strings to the file
            f.format("The min of [1,2,3,4,5,6] is " + min);

            f.format("\n\nThe max of [1,2,3,4,5,6] is " + max);

            f.format("\n\nThe avg of [1,2,3,4,5,6] is " + avg);
            f.close();    
            }     

            } catch (Exception ex) {
              ex.printStackTrace();
            }

          }

       }

1 个答案:

答案 0 :(得分:1)

package TrialPrograms;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;

public class Test {

    public static void main(String[] args) throws IOException {



        FileInputStream fi = new FileInputStream("F:\\Test\\file.txt");
        FileOutputStream fo = new FileOutputStream("F:\\Test\\output.txt");
        BufferedReader br = new BufferedReader(new InputStreamReader(fi));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fo));

        String strLine;
        while ((strLine = br.readLine()) != null)   {

              String[] arr = strLine.split(" ");
              String[] nos = arr[1].split(",");

              Set<Integer> set = new HashSet<Integer>();  
              for(int i = 0; i<nos.length; i++){
                  int no = Integer.parseInt(nos[i]);
                       set.add(no); 
                    }
              TreeSet<Integer> sortedSet = new TreeSet<Integer>(set); 

              switch(arr[0]) {

              case "Min:":
                  String msg1="The Min of [" +arr[1]+ "] is " +(Integer)sortedSet.first();
                  bw.write(msg1);
                  bw.newLine();

                  break;

              case "Max:":
                  String msg2="The Max of [" +arr[1]+ "] is " +(Integer)sortedSet.last();
                  bw.write(msg2);
                  bw.newLine();
                  break;

              case "Avg:":
                  Object[] noarray = sortedSet.toArray();
                  int noarraysize = noarray.length-1;
                  int sum=0;
                  for(int i=0;i<=noarraysize;i++) {

                      int no=Integer.valueOf(noarray[i].toString());
                      sum = sum + no;
                      if(i==noarraysize) {
                          String msg3="The Avg of [" +arr[1]+ "] is  " +(double)sum/noarray.length;
                          bw.write(msg3);
                          bw.newLine();
                                                  }
                  }
                  break;

              case "Sum:":
                  Object[] noarray1 = sortedSet.toArray();
                  int noarraysize1 = noarray1.length-1;
                  int sum1=0;
                  for(int i=0;i<=noarraysize1;i++) {
                      int no=Integer.valueOf(noarray1[i].toString());
                      sum1 = sum1 + no;
                      if(i==noarraysize1) {
                          String msg4="The Sum of [" +arr[1]+ "] is  " +sum1;
                          bw.write(msg4);
                          bw.newLine();
                                                  }
                  }
                  break;

            }

    }
        br.close();
        bw.close();

    }
}