0
import java.io.*;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.lang.*;
import java.util.LinkedList;
import java.util.List;

/**
 *
 * @author Animesh Pandey
 */

public class Main {
    public static int [][] sort( int a[][]){
        int i, j, t = 0, t1 = 0, t2 = 0 ;
        for(i = 0; i < a.length; i++){
            for(j = 1; j < (a.length - i); j++){
                if(a[j-1][2] > a[j][2]){
                    t = a[j-1][2];
                    a[j-1][2] = a[j][2];
                    a[j][2] = t;

                    t1 = a[j-1][1];
                    a[j-1][1] = a[j][1];
                    a[j][1] = t1;

                    t2 = a[j-1][0];
                    a[j-1][0] = a[j][0];
                    a[j][0] = t2;
                }
            }
        }
        return a;
    }

    public static void main(String args[])
            throws IOException {
                String thisLine;
                String[] fullText = new String[100]; //number of possible lines in your file
                int counter = 0;
                int valueForPrediction = 1;
                int K = 8;

                int [][] Matrix = new int [20][3];
                
                List<Integer> Height   = new LinkedList<Integer>();
                List<Integer> OP       = new LinkedList<Integer>();
                List<Integer> Distance = new LinkedList<Integer>();

                String fName = "F:/Lab4.csv";
                String opfName = "F:/Lab4_1.csv";

                FileInputStream fis     = new FileInputStream(fName);
                FileOutputStream fos    = new FileOutputStream(opfName);
                BufferedReader myInput  = new BufferedReader(new InputStreamReader(fis));
                BufferedWriter myOutput = new BufferedWriter(new OutputStreamWriter(fos));

                while ((thisLine = myInput.readLine()) != null) {
                    int sPos = 0;
                    int ePos = 1;
                    int tDelim = 0;
                    String d = "";
                    int colCount = 0;
                    int collCount = 0;
                    boolean fMe = false;
                    boolean finalCol = false;
                    while ( ePos < thisLine.length()) {
                        sPos = thisLine.indexOf(",", ePos);
                        tDelim = thisLine.indexOf(",\"", ePos);

                        if (tDelim == ePos) {
                            fMe = true;
                            collCount = ePos + 1;
                            while (collCount <= thisLine.indexOf("\",")) {
                                collCount += 1;
                            }
                            colCount += 1;
                            sPos = collCount;
                        }

                        if (colCount == 47) { //Get Max count of columns
                            finalCol = true;
                            collCount = ePos + 1;
                            while (collCount <= thisLine.lastIndexOf("\"")) {
                                collCount += 1;
                            }
                            colCount += 1;
                            sPos = collCount;
                        }

                        if (sPos == -1) {
                            d = thisLine.substring(ePos,thisLine.length());
                            //System.out.print(d);

                            if(d.equals("m")){
                                myOutput.write("1");
                                OP.add(1);
                            }else{
                                myOutput.write("2");
                                OP.add(2);
                            }
                            break;
                        }else if(ePos == 1) {
                            d = thisLine.substring(ePos-1,sPos);
                            //System.out.print(d+",");
                            if(d.equals("medium")){
                                myOutput.write("2,");
                                Height.add(2);
                            }else if(d.equals("tall")){
                                myOutput.write("1,");
                                Height.add(1);
                            }else{
                                myOutput.write("3,");
                                Height.add(3);
                            }
                        }else{
                            if (fMe) {
                                d = thisLine.substring(ePos + 1, sPos);
                                fMe = false;
                            }else if (finalCol) {
                                d = thisLine.substring(ePos, sPos);
                                finalCol = false;
                            }else{
                                d = thisLine.substring(ePos, sPos);
                            }
                            //System.out.print(d+",");
                            if(d.equals("medium")){
                                myOutput.write("2,");
                                Height.add(2);
                            }else if(d.equals("tall")){
                                myOutput.write("1,");
                                Height.add(1);
                            }else{
                                myOutput.write("3,");
                                Height.add(3);
                            }
                        }
                        colCount += 1;
                        ePos = sPos + 1;
                    }
                    //System.out.println("\n");
                    myOutput.write("\n");
                   
        counter++;
        fullText[counter] = thisLine;

    }
               Integer[] Hgt = Height.toArray(new Integer[0]);
               Integer[] Output = OP.toArray(new Integer[0]);
               int Range = Hgt.length;
               for(int i=0; i<Range; ++i){
                    Distance.add(Math.abs(valueForPrediction - Hgt[i]));
               }
               //System.out.println(Distance);
               Integer[] Dist = Distance.toArray(new Integer[0]);
               /*Dist = sort(Dist);
               for(int i=0; i<Range; ++i){
                    System.out.print(Dist[i]);
               }*/
               System.out.println("\n");

               for(int n=0; n<Range; ++n){
                   Matrix[n][0] = Hgt[n];
                   Matrix[n][1] = Output[n];
                   Matrix[n][2] = Dist[n];
               }
               int [][] sortedMatrix = sort(Matrix);

               for(int i=0; i<Range; ++i){
                   for(int j=0; j<3; ++j){
                       System.out.print(sortedMatrix[i][j]);
                   }
                   System.out.println("\n");
               }
               int sum = 0;
               float average;
               for(int i=0; i<K; ++i){
                   sum += sortedMatrix[i][1];
               }
               average = sum/K;
               System.out.println(sum + "\n");
               //The sum is 11 and K is 8. So, the value of average should be 1.375
               System.out.printf("%f", average);
      myOutput.close();
  }
}

The csv files are in the attachment.

The average is supposed to be greater than 1.
But still using System.out.printf() prints it as 1.00000.

What should I do??? :?:

Please help!

2
Contributors
1
Reply
2
Views
5 Years
Discussion Span
Last Post by NormR1
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.