这就是问题所在,我制作了一个方法,它给出了文件中最大数字的索引,但它没有编译,我无法解决这个问题,我的代码一切都没问题? 数组或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
但它也应该从最后一行的文件中给出最大数字的索引!
答案 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()
不打印最大元素所在的索引,但是元素的所有索引都比以前的所有元素都大。
可能有更多。您需要在该代码中进行大量改进。此外,调试对于查找算法中的错误非常有用。