I am trying to make a method 'difference' that finds the largest number in an int array and returns the int to the main method. I am getting an error telling me I can't convert an int array to an int. How can I make this work? I don't want to return an entire array. Thanks a lot
public class bigDiff{
public static void main(String[] args){
int[] arr = new int[] {7, 6, 8, 9};
difference(arr);
}
public static int difference (int[] input){
int smallest = input[0];
int largest = input[0];
for (int i = 0; i < input.length; i++){
if(input[i] >= largest){
largest = input[i];
} else if(input[i] <= input[largest]){
smallest = input[i];
}
}
return largest;
}
}
答案 0 :(得分:0)
观看这行代码
else if(input[i] <= input[largest]){
smallest = input[i];
}
input[largest]
,第一次最大值为7表示输入[7],而您的数组大小仅为4.这不起作用。
input[largest]
改为使用input[i]
。
答案 1 :(得分:0)
我会尝试解释一些事情:
首先,你对数组的声明很奇怪,你应该声明:int[] arr = {7, 6, 8, 9};
其次,difference
函数返回一个int,你用它做什么?什么都没有..尝试打印.. System.out.println(difference(arr));
第三,你想要获得最大的数字,为什么你需要最小的数字?甚至编译器也会警告您没有使用的变量。
因此,您的difference
功能应该如下:
int largest = input[0];
for (int i = 0; i < input.length; i++){
if(input[i] > largest)
largest = input[i];
}
return largest;
** input[i] == largest
您无需执行任何操作,因此检查if(input[i] > largest)
就足够了。
祝你好运:)
答案 2 :(得分:0)
你已声明一个数组,即此数组的int[] arr = new int[] {7, 6, 8, 9}
长度为4,但这里是差函数,
for (int i = 0; i < input.length; i++){
if(input[i] >= largest){
largest = input[i];
} else if(input[i] <= input[largest]){
smallest = input[i];
}
}
当您在其他if(输入[i]&lt; =输入[最大])进行比较时,它会产生错误,因为在第一次迭代中最大= 7 并且在下一次迭代中,如果选中 input [1]&lt; = input [7] ,它将进入else,这样就会生成数组超出范围的异常。
我认为您希望获得数组中最大的元素,因此您可以简化数组并轻松访问最大元素。
答案 3 :(得分:0)
问题:
1. try
{
// new xdoc instance
XmlDocument xDoc = new XmlDocument();
//load up the xml from the location
xDoc.Load(sitemap);
// start traversing from the children of the root node
var rootNode = xDoc.FirstChild;
traverse(rootNode.ChildNodes, rootNode.Name);
}
catch
{
Console.WriteLine("Error :-(");
}
用作索引(即largest
),如果input[largest]
大于数组长度,则可能导致ArrayOutOfBoundsException
2. largest
用largest
来设置if
3. smallest
返回difference
元素,而不是largest
和largest
元素之间的差异
4.未使用smallest
的返回值(不是真正的问题,但是您看不到difference
的输出)
否则下面的(修改)程序有效:
difference
答案 4 :(得分:-1)
This should work just fine:
public static int difference (int[] input){
int smallest = input[0];
int largest = input[0];
for (int i = 0; i < input.length; i++){
if(input[i] > largest){
largest = input[i];
} else if(input[i] < smallest){
smallest = input[i];
}
}
return largest;
}
Also there is no point in keeping the smallest value when you're interested only in the largest.