我正在用Java编写一个方法(第一次这样做),当我编译时我遇到了一个小错误,尽管调试了数百次,我仍然不明白我哪里出错了。最后,我转向互联网寻求帮助。
以下是我的代码中有问题的部分:
public int[] sortArray(String [] args) {
String temp = "";
for(int x = 0; x < args.length; x++){
for(int y = 1; y < args.length - 1; y++){
if(Integer.parseInt(args[y-1])>Integer.parseInt(args[y])){
temp = args[y-1];
args[y-1] = args[y];
args[y] = temp;
}
}
}
}
每次编译它都会提供错误:缺少return语句 当我把“返回0;”在最后一个'}'之前的代码中,它给出了错误类型的返回错误,即0是一个int,我需要一个int []返回。
答案 0 :(得分:4)
您应该返回一个整数数组而不是整数,或者将方法签名的返回类型更改为void
。
public void sortArray(String [] args) {
// ...
}
答案 1 :(得分:2)
返回意味着的方法是什么?你的方法到位排序 - 为什么它需要返回任何东西?你可以把它变成一个无效的方法:
public void sortArray(String[] args) {
for (int x = 0; x < args.length; x++) {
for (int y = 1; y < args.length - 1; y++) {
if (Integer.parseInt(args[y-1]) > Integer.parseInt(args[y])) {
// Note change of declaration location: in general, declare
// variables with minimal scope
String temp = args[y - 1];
args[y - 1] = args[y];
args[y] = temp;
}
}
}
(注意你在这里做了很多不必要的解析,而且你从来没有在你的内循环中使用x
的值......是故意的吗?)
答案 2 :(得分:1)
public String[] sortArray(String [] args) {
String temp = "";
for(int x = 0; x < args.length; x++){
for(int y = 1; y < args.length - 1; y++){
if(Integer.parseInt(args[y-1])>Integer.parseInt(args[y])){
temp = args[y-1];
args[y-1] = args[y];
args[y] = temp;
}
}
}
return args;
}
或使用void type
答案 3 :(得分:0)
将排序方法的签名更改为void
。否则,它希望您在方法结束时返回已排序的int数组。
如果要返回已排序的String数组,请按以下方式更改方法:
public String[] sortArray(String [] args) {
String temp = "";
for(int x = 0; x < args.length; x++){
for(int y = 1; y < args.length - 1; y++){
if(Integer.parseInt(args[y-1])>Integer.parseInt(args[y])){
temp = args[y-1];
args[y-1] = args[y];
args[y] = temp;
}
}
}
return args;
}
答案 4 :(得分:0)
您的函数中没有return语句!因此编译错误......看来你直接在args[]
上工作,所以不要返回任何东西(void function)
答案 5 :(得分:0)
您可能只想返回args
或将方法更改为void
答案 6 :(得分:0)
在java参数中,引用类似于C / C ++中的(char * args)。所以你不需要在本节中返回任何内容只需在调用者中使用args数组就可以了:)
答案 7 :(得分:0)
如果您不想返回任何值,请将返回类型更改为void。如果你想返回任何东西,那么使用适当的数据类型,在你的情况下你应该返回int数组变量。