应该给我索引的方法没有编译

时间:2016-08-18 11:06:37

标签: java indexing

这就是问题所在,我制作了一个方法,它给出了文件中最大数字的索引,但它没有编译,我无法解决这个问题,我的代码一切都没问题? 数组或largeDigit有问题吗?我根本无法得到它。

public class TableBuilder {//CLASS CONTAINS METHODS
    public static Scanner scanner;
    public final static String filePath = "C:\\Temp\\tab.txt";
    public static int[] table;
    public static File file;
    public static int largestDigit;

    public static File makeNewFile() {
        file = new File(filePath);
        return file;
    }

    public static void openFile() {
        try {
            scanner = new Scanner(file);
        } catch(Exception e) {
            System.out.println("ERROR!");
        }
    }

    public static void exitFile(File file) {
        System.exit(1);
    }

    public static int[] buildTable() throws IOException {
        while(scanner.hasNextLine()) {
            System.out.print(scanner.nextLine());
        }
        int tableLength = (int) file.length();
        table = new int[tableLength];
        return table;
    }

    public static void findLargestDigit() throws IOException {
        int digit;
        largestDigit = 0;
        int n = scanner.nextInt();
        for(int i=0; i<n; i++) {
            digit = scanner.nextInt();
            if(digit>largestDigit) {
                largestDigit = digit;
                System.out.println("\n"+largestDigit);
            }
        }
    }

public static void findIndexOfLargestDigit() throws IOException {
        int largestIndex = 0;
        for(int i=1; i<table.length; i++) {
            if(table[i]<table[largestIndex]) {
                largestIndex = i;
                System.out.print(table[largestIndex]);
            }
        }
    }

    public static void main(String[] args) throws IOException {
              TableBuilder.makeNewFile();
        TableBuilder.openFile();
        TableBuilder.buildTable();
        TableBuilder.makeNewFile();
        TableBuilder.openFile();
        TableBuilder.findLargestDigit();
        TableBuilder.findIndexOfLargestDigit();
    }
}

我的程序给出了结果:

1 5 5 3 -1 2 5 4
5

但它也应该从最后一行的文件中给出最大数字的索引!

2 个答案:

答案 0 :(得分:0)

我认为您应该修改方法'findIndexOfLargestDigit'

//It prints all the indices of the largest digit

public static void findIndexOfLargestDigit() throws IOException {
    int largestIndex = 0;
    for(int i=0; i<table.length; i++) {
        if(table[i]==largestDigit) {
            largestIndex = i;
            System.out.print(largestIndex);

        }
    }
}

答案 1 :(得分:0)

您的findIndexOfLargestDigit()方法不会打印任何内容,因为您的buildTable只会创建一个空数组。 table = new int[tableLength];只会创建一个int数组,其长度为tableLength,内容为0。该数组永远不会填充在代码中的任何位置。

除此之外,我可以在您的代码中看到几个错误:

  • File.length()返回文件的大小(以字节为单位),这可能与文件中写入的位数不一致。

  • findLargestDigit()与阵列配合使用时,findIndexOfLargestDigit()方法适用于扫描仪。这不是很一致。

  • 您的findIndexOfLargestDigit()不打印最大元素所在的索引,但是元素的所有索引都比以前的所有元素都大。

可能有更多。您需要在该代码中进行大量改进。此外,调试对于查找算法中的错误非常有用。