【问题标题】:java - error incompatible types: unexpected return value - iterating through a listjava - 错误不兼容类型:意外返回值 - 遍历列表
【发布时间】:2019-03-20 18:06:28
【问题描述】:

我被要求编写代码来显示数字列表中整数的总和。我将利用已经为我声明的总变量,并使用 for 循环遍历列表的元素。

问题是我不断收到错误不兼容的类型:意外的返回值。'当我尝试将 main 方法中的 void 更改为 int 时,我收到错误“此处不允许 void 类型”。有关如何解决此问题的任何想法?

import java.util.ArrayList;

public class ArrayListTestProgram {
    public static void main(String args[]) {
        int                     total = 0;
        ArrayList<Integer>      numbers;
        numbers = new ArrayList<Integer>(); 
        numbers.add(1);
        numbers.add(45);
        numbers.add(23);
        numbers.add(87);
        numbers.add(89);
        numbers.add(213); 
        System.out.println("The ArrayList looks like this: " + numbers);
        System.out.println("It has " + numbers.size() + " elements in it");
        System.out.println("The 5th element in it is: " + numbers.get(4));
        int sum = 0;


        for (int i = 0; i < numbers.size(); i++) {
          sum += numbers.get(i);
          return sum;

        }
        System.out.println(sum);

    }
}

【问题讨论】:

    标签: java compiler-errors void


    【解决方案1】:

    去掉返回线:

    for (int i = 0; i < numbers.size(); i++) {
        sum += numbers.get(i);
    //  return sum;
    }
    

    您的主要返回类型为void,而您返回的是int

    【讨论】:

    • 嗨!我删除了该行并将 void 更改为 int,但我仍然收到错误 'void' type not allowed here'
    • 您不应将void 更改为int。您的 main 方法应始终返回 void。它应该总是看起来像这样:public static void main(String[] args)
    • 我将其保留为 void,但错误仍在弹出。有什么想法吗?
    【解决方案2】:

    删除System.out.println(sum)周围的打印并删除return sum

    import java.util.ArrayList;
    
    public class ArrayListTestProgram {
        public static void main(String args[]) {
            int total = 0;
            ArrayList<Integer> numbers;
            numbers = new ArrayList<Integer>();
            numbers.add(1);
            numbers.add(45);
            numbers.add(23);
            numbers.add(87);
            numbers.add(89);
            numbers.add(213);
            System.out.println("The ArrayList looks like this: " + numbers);
            System.out.println("It has " + numbers.size() + " elements in it");
            System.out.println("The 5th element in it is: " + numbers.get(4));
            int sum = 0;
    
    
            for (int i = 0; i < numbers.size(); i++) {
                sum += numbers.get(i);
    
            }
            System.out.println(sum);
    
        }
    }
    

    【讨论】:

      【解决方案3】:

      您不能为 main() 方法设置返回类型。它应该是无效的。 您可以创建新的静态方法

      public static giveMeSumOfList(List<Integer> list){
      int sum = 0; 
      for (int i = 0; i < list.size(); i++) {
                sum += numbers.get(i);
                return sum;
              }
      

      之后你可以从 main 和其他静态方法调用这个方法。

      【讨论】:

      • 嗨!当我添加时,我得到错误无效的方法声明;需要返回类型
      • 像这样重写 public static int giveMeSumOfList(List list){ int sum = 0; for (int i = 0; i
      猜你喜欢
      • 2019-04-28
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 2021-04-15
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多