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