值从不使用/缺少返回语句

时间:2015-10-22 08:22:50

标签: java return

我正在做一个练习,我必须编写一个返回数组中最大元素索引的方法。

代码是这样的:

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语句。

永远感谢帮助!在此先感谢:)

4 个答案:

答案 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;
}