Java 应该为我提供索引的方法不';不编译

Java 应该为我提供索引的方法不';不编译,java,indexing,Java,Indexing,这里有一个问题,我制作了一个方法,给我文件中最大数字的索引,但它不编译,我无法解决这个问题,我的代码一切正常吗? 数组或最大数字是否有问题?我一点也不懂 public class TableBuilder {//CLASS CONTAINS METHODS public static Scanner scanner; public final static String filePath = "C:\\Temp\\tab.txt"; public static int[]

这里有一个问题,我制作了一个方法,给我文件中最大数字的索引,但它不编译,我无法解决这个问题,我的代码一切正常吗? 数组或最大数字是否有问题?我一点也不懂

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

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

我认为您应该修改“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);

        }
    }
}
//它打印最大数字的所有索引
公共静态void findIndexOfLargestDigit()引发IOException{
int-largestIndex=0;

对于(int i=0;i您的
findIndexOfLargestDigit()
方法不打印任何内容,因为您的
buildTable
只创建一个空数组。
table=new int[tableLength];
仅创建长度为
tableLength
int
数组,数组中填充
0
s。此数组从不填充代码中的任何位置

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

  • File.length()

  • 您的
    findLargestDigit()
    方法与扫描仪一起工作,而
    findIndexOfLargestDigit()
    与数组一起工作。这不是很连贯


  • 您的
    findIndexOfLargestDigit()
    不会打印最大元素所在的索引,而是打印大于之前所有元素的所有元素的索引


可能还有更多。您需要对代码进行大量的细化。此外,调试对于发现算法中的错误非常有用。

非常奇怪的是,程序没有编译,却给出了一个结果?那么,它是什么,它没有编译(在这种情况下,您有什么错误?)或者它不起作用?@jas97显然,当你没有得到预期的结果时,你的代码是不正确的。你的
findLargestDigit
方法与扫描器一起工作。但是你的
findIndexOfLargestDigit
方法与一个表一起工作。这个表是空的,因为你的
buildTable
方法是空的完全错误。正确使用概念和术语在其中至关重要:编译是将源代码转换为某种机器可用形式的步骤。如果代码语法正确,它将进行编译,但可能会产生错误的结果或崩溃,但这是完全不同的事情。
buildTable()
方法只创建了一个空数组,该数组永远不会被填充。因此,您的
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);

        }
    }
}