【发布时间】:2023-03-28 07:51:02
【问题描述】:
除了“isEmpty”返回语句之外,它都正确打印。我如何让它正确返回“-1”,以便主函数中的最后 2 个语句完成它们的工作。
注意:我不能编辑主函数
我的代码如下:
import java.util.*;
public class task7{
public static int find_minimum_length(ArrayList<String> A)
{
int position = 0;
int smallest = A.get(0).length();
for(int i = 0; i<A.size(); i++)
{
if(A.isEmpty())
{
return -1;
}
if(A.get(i).length()<smallest)
{
smallest = A.get(i).length();
int shortt = A.indexOf(A.get(i));
position = shortt;
}
}
return position;
}
public static ArrayList<String> remove_minimum_length(ArrayList<String> A)
{
if(A.isEmpty())
{
}
else
{
A.remove(find_minimum_length(A));
}
return A;
}
public static void main(String[] args)
{
ArrayList<String> a = new ArrayList<String>();
a.add("whale");
a.add("cat");
a.add("elephant");
a.add("donkey");
a.add("goat");
System.out.println(a);
int position = find_minimum_length(a);
System.out.printf("minimum position = %d\n\n", position);
remove_minimum_length(a);
System.out.println(a);
position = find_minimum_length(a);
System.out.printf("minimum position = %d\n\n", position);
remove_minimum_length(a);
System.out.println(a);
position = find_minimum_length(a);
System.out.printf("minimum position = %d\n\n", position);
remove_minimum_length(a);
System.out.println(a);
position = find_minimum_length(a);
System.out.printf("minimum position = %d\n\n", position);
remove_minimum_length(a);
System.out.println(a);
position = find_minimum_length(a);
System.out.printf("minimum position = %d\n\n", position);
remove_minimum_length(a);
System.out.println(a);
position = find_minimum_length(a);
System.out.printf("minimum position = %d\n\n", position);
}
}
【问题讨论】:
-
返回
null。您不能返回-1来代替特定类型的对象,就像您的情况一样。 -
int shortt = A.indexOf(A.get(i)); position = shortt;是一种非常复杂的写法position=i; -
@skypjack 而不是返回
null,您应该返回空的ArrayList<String>,因为这将为您的类的客户端保存一个空检查。 Joshua Bloch 在 Effective Java 的第 43 条中讨论了这一点。 -
@Jubobs 我同意你的观点,但是如果你看一下代码,你会注意到
remove_minimum_length的返回值从未使用过,因此该函数甚至可以在其原型中包含void和if可以删除。无论如何,问题不在于那个功能,我误解了这个问题。我的错。 :-)
标签: java arraylist return return-value is-empty