Question

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.io.FileNotFoundException;

import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;

import java.util.List;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class database {
    String fileName;
    Scanner input;
    String[][] data;
    List<String> useful_list;
    List<String> records;
    ArrayList<Object> handles;

    public database(String fileName) {
        this.fileName = fileName;
    }

    public void openFile() {
        try {
            input = new Scanner(new File(fileName));
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            return;
        }
    }

    public void readRecords() {
        // Read all lines (records) from the file into an ArrayList
        records = new ArrayList<String>();
        try {
            while (input.hasNext())
                records.add(input.nextLine());

        } catch (Exception e) {
            // TODO: handle exception
        }

    }

    public void parseFields() {
        String delimiter = ",\n";

        // Create two-dimensional array to hold data (see Deitel, p 313-315)
        int rows = records.size(); // #rows for array = #lines in file
        data = new String[rows][]; // create the rows for the array
        int row = 0;

        for (String record : records) {
            StringTokenizer tokens = new StringTokenizer(record, delimiter);
            int cols = tokens.countTokens();
            data[row] = new String[cols]; // create columns for current row
            int col = 0;
            while (tokens.hasMoreTokens()) {
                data[row][col] = tokens.nextToken().trim();

                col++;

            }

            row++;

        }

    }

    public static void main(String[] args) {
        String filename = null;
        String[] values = new String[4];
        String input = null;

        BufferedReader reader = new BufferedReader(new InputStreamReader(
                System.in));

        try {
            filename = reader.readLine();
            input = reader.readLine();
            values = input.split(",");

        } catch (IOException e) {
            // TODO Auto-generated catch block
            System.out.println("Invalid Input");
            return;
        }

        int[] input1;
        input1 = new int[4];

        try {
            for (int j = 0; j < values.length; j++) {
                input1[j] = Integer.parseInt(values[j]);
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            System.out.println("Invalid Input");
            return;
        }

        if (input1[0] >= 4 || input1[0] <= 0) {
            System.out.println("Invalid Input");
            return;
        }

        database file1 = new database(filename);
        file1.openFile();
        file1.readRecords();
        file1.parseFields();
        file1.search(input1[1]);
        if (file1.useful_list.size() == 0) {
            System.out.println("Data Unavailable");
            return;
        }

        file1.sortarray(input1[0] - 1);

        int width = input1[2];
        int skip = (input1[3] - 1) * width;
        Iterator<Object> it = file1.handles.iterator();
        for (int i = 1; i <= skip; i++) {
            if (it.hasNext()) {
                it.next();
            } else {
                System.out.println("Data Unavailable");
                return;
            }

        }

        for (int j = 1; j <= width && it.hasNext(); j++) {
            String[] a = (String[]) it.next();
            for (int i = 0; i < a.length; i++)
                if(i<a.length-1)
                System.out.print(a[i] + ",");
                else
                    System.out.print(a[i]);
            System.out.println();
        }

    }

    void sortarray(final int index) {
        handles = new ArrayList<Object>();
        for (int i = 0; i < data.length; i++)
            handles.add(data[i]);

        Collections.sort(handles, new Comparator<Object>() {
            public int compare(Object o1, Object o2) {
                String[] a = (String[]) o1;
                String[] b = (String[]) o2;
                if (index == 1 || index == 0) {
                    int left = Integer.parseInt(a[index]);
                    int right = Integer.parseInt(b[index]);
                    return Integer.compare(left, right); //Line 165 
                } else {

                    if (a.length == 0 && b.length == 0)
                        return 0;
                    if (a.length == 0 && b.length != 0)
                        return 1;
                    if (a.length != 0 && b.length == 0)
                        return -1;
                    return a[index].compareTo(b[index]);
                }
            }

            public boolean equals(Object o) {
                return this == o;
            }

        });

    }

    void search(int searchs) {
        useful_list = new ArrayList<String>();

        for (int row = 0; row < data.length; row++) {

            if (Integer.parseInt(data[row][0]) == searchs) {
                // store in array list
                useful_list.add(data[row][0] + "," + data[row][1] + ","
                        + data[row][2] + "," + data[row][3]);

            }
        }
        if (useful_list.size() == 0) {
            return;
        }
        String delimiter = ",\n";

        // Create two-dimensional array to hold data (see Deitel, p 313-315)
        int rows = useful_list.size(); // #rows for array = #lines in file
        data = new String[rows][]; // create the rows for the array
        int row1 = 0;

        for (String record : useful_list) {
            StringTokenizer tokens = new StringTokenizer(record, delimiter);
            int cols = tokens.countTokens();
            data[row1] = new String[cols]; // create columns for current row
            int col1 = 0;
            while (tokens.hasMoreTokens()) {
                data[row1][col1] = tokens.nextToken().trim();

                col1++;

            }

            row1++;

        }

    }

}

this code is working fine on eclipse .
but if i submit it for my online compilation ..
it shows compile time error.

error message
*database.java 163 cannotfindsymbolsymbol methodcompare int int location class java.lang.Integer return Integer.compare left right ;^1error*

Was it helpful?

Solution 2

Integer.compare(int,int) was introduced in Java 1.7. I expect you are seeing that error because Java 6 or earlier is used to compile the code. The docs. themselves (linked above) show how to do it for earlier Java (you should consult them at times like this).

Integer.valueOf(x).compareTo(Integer.valueOf(y))

OTHER TIPS

Integer.compare was introduced to Java in version 1.7. Chances are that the online compiler has an earlier version of the compiler

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top