java - 你能帮我找出这个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 应用程序运行。
解决方案
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)
推荐阅读
- angular - 未捕获的类型错误:__WEBPACK_IMPORTED_MODULE_0__angular_core__.OpaqueToken 不是构造函数
- google-cloud-platform - 打开集群 Web 界面时出现问题(错误请求)
- java - 使用 for 循环重复字符串
- c - C - 使用 getline() 从文本文件读取的字符指针。为什么会这样?如何改进我的解决方法?
- windows-10 - 以编程方式(显示和)配置 Win 10 任务栏上的快速启动工具栏
- python - 在 Pandas 中将一行除以另一行时出现关键错误
- julia - 如何在 Julia 中锁定变量类型?
- javascript - 使用 .map 浏览列表时不断调用 API 做出反应
- sql - 将汇总统计信息添加到 SQL 中的现有表
- javascript - 如何使用 `Array.from` 将 javascript 代码片段翻译为 Parenscript(Common Lisp 库)?