java - 错误不兼容类型:意外返回值 - 遍历列表

Posted

技术标签:

【中文标题】java - 错误不兼容类型:意外返回值 - 遍历列表【英文标题】:java - error incompatible types: unexpected return value - iterating through a list 【发布时间】: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);

    

【问题讨论】:

【参考方案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

以上是关于java - 错误不兼容类型:意外返回值 - 遍历列表的主要内容,如果未能解决你的问题,请参考以下文章

计算平均值时的意外返回值?

java.lang.IllegalStateException:返回值类型不兼容

mypy 错误:返回值类型不兼容(得到“object”,预期“Dict [Any, Any]”)

Java布尔“意外的返回值”

Java方法遍历一次数组返回两个结果(最大值与最小值)

void 函数中的意外非 void 返回值(swift)