首页 > 解决方案 > 你能帮我找出这个Java代码中的错误吗

问题描述

import java.util.*;
import java.lang.*;
public class FindMissingNumbers {
    public static void main(String[] args) {
        String input1="1 2 3 3 5 5";
        String[] input2 = input1.split(" ");
        int l1=0;
        int a=1;
       final int[] l2 = { 0 };
       HashMap<Integer,Integer> has = new HashMap<>();
       for (int i=0;i< input2.length;i++){
           if(input2[i] == null || input2[i] ==" ")
               continue;
           if(Integer.parseInt(input2[i]) != a){
               l1++;
           }
           if(has.containsKey(Integer.parseInt(input2[i]))){
               has.put(Integer.parseInt(input2[i]),has.get(Integer.parseInt(input2[i]))+1);
           }
           else{
               has.put(Integer.parseInt(input2[i]),1);
           }
           a++;
       }
       String ans = String.valueOf(l1);
       has.forEach((k,v)-> {
           if(v>1){
               l2[0]++;
           }
       });

       String final_ans = ans+l2[0];
       return final_ans;
    }

}

作为 Void 方法给出错误不能返回值。如果我试图将方法更改为静态并删除 void 它不会作为 java 应用程序运行。

标签: java

解决方案


main 是无效的,所以它不应该返回任何东西,你不能在 main 方法中有 return 语句。

每个方法都必须包含一个返回类型(例如 int、long、double、int[] 和 void,其中 void 表示该方法不会返回任何内容)。
如果您尝试运行没有返回类型的方法,那么它将不会运行。

public static void main(String[] args) {}

此方法的返回类型为 void,这意味着此方法中不应有 return 语句,
但您最终返回的是 ans

return final_ans;

因此,要运行应用程序,您需要删除 return 语句,而是可以像这样将答案打印到控制台

System.out.println(ans)

推荐阅读