.txt文件包含以下值:
10
40
30
5
18
此代码用于读取.txt文件中的数字,然后保存到数组中。然后使用方法查找最大数字并返回值。 我在运行它时遇到错误。我做错了什么?
import java.io.File;
import java.util.Scanner;
public class MinOppgave4 {
public static void main(String[]args)throws Exception{
String fileName = "MinOppgave4tekst.txt";
File mineFile = new File(fileName);
Scanner in = new Scanner(mineFile);
int[] num = new int [5];
for(int i=0; i<num.length; i++)
{
num[i]=in.nextInt();
System.out.println(num[i]);
}
System.out.println("The biggest number is: "+GetTheBiggestNum(num));
}
public static int GetTheBiggestNum(int[] num)
{
int biggestNum = 0;
if ((num[0] > num[1]) && (num[0] > num[2]) && (num[0] > num[3]) && (num[0] > num[4]) && (num[0] > num[5]))
{
biggestNum = num[0];
}
else if ((num[1] > num[0]) && (num[1] > num[2]) && (num[1] > num[3]) && (num[1] > num[4]) && (num[1] > num[5]))
{
biggestNum = num[1];
}
else if ((num[2] > num[0]) && (num[2] > num[1]) && (num[2] > num[3]) && (num[2] > num[4]) && (num[2] > num[5]))
{
biggestNum = num[2];
}
else if ((num[3] > num[0]) && (num[3] > num[1]) && (num[3] > num[2]) && (num[3] > num[4]) && (num[3] > num[5]))
{
biggestNum = num[3];
}
else if ((num[4] > num[0]) && (num[4] > num[1]) && (num[4] > num[2]) && (num[4] > num[3]) && (num[4] > num[5]))
{
biggestNum = num[4];
}
else
{
biggestNum = num[5];
}
return biggestNum;
}
}
答案 0 :(得分:1)
您的代码引用了num[5]
,但是您创建了一个包含5个值的数组,这些值将是num[0]
到num[4]
。所以你走出阵列的界限。
找到最大元素的一种常用方法是对数组进行排序,然后选择该排序数组中的第一个(或最后一个)项。
Java也可以使用Collections.max执行此操作,您只需执行以下操作:
int biggest = Collections.max(Arrays.asList(num))
但是,如果你想自己做,比你现在的方法更好的方法是遍历你的数组并找到最大的价值:
public static int GetTheBiggestNum(int[] num) {
if (num.length == 0) {
throw new IllegalArgumentException("Array cannot empty")
}
int biggest = num[0];
for (int i = 1; i < num.length; i++) {
if (num[i] > biggest)
biggest = num[i];
}
return biggest;
}
答案 1 :(得分:0)
将循环更改为此。最高的将是最高的数字。
int highest = 0;
for(int i=0; i<num.length; i++)
{
num[i]=in.nextInt();
System.out.println(num[i]);
if(highest < num[i]){
highest = num[i];
}
}
如果将循环更改为此,则甚至不需要其他方法。
答案 2 :(得分:0)
你的阵列尺寸=&gt; 5.只能访问长度为5的数组0 to 4
。
但是在您的代码中,访问num[5]
,它会抛出ArrayIndexOutofBoundsException。
有一件事是为什么谷歌不能在数组中找到最大数量。例如SO
答案 3 :(得分:0)
应该有 ArrayIndexOutOfBoundsException ,因为你在num数组中有5个元素,并且你试图访问方法 GetTheBiggestNum 中的 num [5] ,这是不存在的。您可以使用其他更好的方法从整数数组中获取最大元素。