我正在做一个练习,我必须编写一个返回数组中最大元素索引的方法。
代码是这样的:
import java.util.Scanner;
public class IndexLargestElement {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter 10 double values");
double[] list = new double [10];
for (int i = 0; i < list.length; i++)
list[i] = input.nextDouble();
int index = indexOfLargestElement(list);
System.out.println("The index of the largest element is " + index);
}
public static int indexOfLargestElement(double[] array){
double max = array[0];
int index = 0;
for (int i = 1; i < array.length; i++) {
if (array[i] > max) {
max = array[i];
index = i;
return index;
}
}
}
现在在int index = 0;和max = array [i]; Netbeans告诉我:这个值从未使用过。为什么?我不明白我做错了什么?可能是大括号的东西?当我尝试运行时,它会产生编译错误,说没有return语句。
永远感谢帮助!在此先感谢:)
答案 0 :(得分:1)
查看indexOfLargestElement()
。这是它的简化版本:
for(.....) {
if(condition) {
return something;
}
}
这意味着只有在其中一个循环迭代条件为true
时,该方法才会返回值。但如果不是呢?您必须确保声明为返回值的方法在所有方案中都执行此操作。
在您的情况下,如果条件始终为假,您必须决定应该怎么做。 您可以返回某种默认值或抛出异常。在方法结束时执行:
int indexOfLargestElement() {
for(.....) {
if(condition) {
return something;
}
}
// RETURN
return SOME_DEFAULT;
// OR, alternatively throw exception:
// throw new IllegalArgumentException("Some text");
}
答案 1 :(得分:0)
你把&#34;返回索引&#34;在if语句中,这使得它不确定返回将100%发生(这是你得到的警告),只需移动&#34;返回索引&#34;在循环和if语句之后。
答案 2 :(得分:0)
public static int indexOfLargestElement(double[] array){
double max = array[0];
int index = 0;
for (int i = 1; i < array.length; i++) {
if (array[i] > max) {
max = array[i];
index = i;
}
}
return index;
由于您不想在检查所有元素之前返回,如果它进入if,那么从不使用max。
答案 3 :(得分:0)
线&#34;返回索引&#34;应该在for循环之外。
public class IndexLargestElement {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter 10 double values");
double[] list = new double [10];
for (int i = 0; i < list.length; i++)
list[i] = input.nextDouble();
int index = indexOfLargestElement(list);
System.out.println("The index of the largest element is " + index);
}
public static int indexOfLargestElement(double[] array){
double max = array[0];
int index = 0;
for (int i = 1; i < array.length; i++) {
if (array[i] > max) {
max = array[i];
index = i;
}
}
return index;
}