当 ArrayList.isEmpty() 时如何 return 一个值?
How do I return a value when ArrayList.isEmpty()?
除了 "isEmpty" return 语句外,其他都正确打印。我如何才能正确地 return "-1" 以便 main 函数中的最后 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);
}
}
移动这个:
if(A.isEmpty())
{
return -1;
}
超出您的 for 块范围。只有在有元素要迭代时才会执行 for 块,也就是说,如果列表不为空。
你的问题是 for
块将在数组很大时执行。因此,如果您的数组为空,则大小为 0。因此 for
不会执行。
要解决您的问题,您必须将 if
-子句移出 for
。
应用于您的代码应该如下所示:
public static int find_minimum_length(ArrayList<String> A)
{
int position = 0;
int smallest = A.get(0).length();
if(!A.isEmpty())
{
for(int i = 0; i<A.size(); i++)
{
if(A.get(i).length()<smallest)
{
smallest = A.get(i).length();
int shortt = A.indexOf(A.get(i));
position = shortt;
}
return position;
}
else
{
return -1;
}
}
我会对你的方法做一些修改。首先,您应该检查 null
输入,如果找到它,则检查 return -1
。您还可以 return -1
在输入为空的情况下 ArrayList
.
public static int find_minimum_length(List<String> a) {
if (a == null || a.size() == 0) {
return -1;
}
int position = 0;
int smallest = a.get(0).length();
// start iterating your for loop at 1, not 0
for (int i=1; i < a.size(); i++) {
if (a.get(i).length() < smallest) {
smallest = a.get(i).length();
position = i;
}
}
return position;
}
public static List<String> remove_minimum_length(List<String> a) {
int index = find_minimum_length(a);
if (index != -1) {
a.remove(index);
}
return a;
}
将您的 isEmpty()
调用放在 for 循环之外。
if(A.isEmpty()) return -1;
for(int i = 0; i<A.size(); i++)
{
if(A.get(i).length()<smallest)
{
smallest = A.get(i).length();
int shortt = A.indexOf(A.get(i));
position = shortt;
}
}
除了 "isEmpty" return 语句外,其他都正确打印。我如何才能正确地 return "-1" 以便 main 函数中的最后 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);
}
}
移动这个:
if(A.isEmpty())
{
return -1;
}
超出您的 for 块范围。只有在有元素要迭代时才会执行 for 块,也就是说,如果列表不为空。
你的问题是 for
块将在数组很大时执行。因此,如果您的数组为空,则大小为 0。因此 for
不会执行。
要解决您的问题,您必须将 if
-子句移出 for
。
应用于您的代码应该如下所示:
public static int find_minimum_length(ArrayList<String> A)
{
int position = 0;
int smallest = A.get(0).length();
if(!A.isEmpty())
{
for(int i = 0; i<A.size(); i++)
{
if(A.get(i).length()<smallest)
{
smallest = A.get(i).length();
int shortt = A.indexOf(A.get(i));
position = shortt;
}
return position;
}
else
{
return -1;
}
}
我会对你的方法做一些修改。首先,您应该检查 null
输入,如果找到它,则检查 return -1
。您还可以 return -1
在输入为空的情况下 ArrayList
.
public static int find_minimum_length(List<String> a) {
if (a == null || a.size() == 0) {
return -1;
}
int position = 0;
int smallest = a.get(0).length();
// start iterating your for loop at 1, not 0
for (int i=1; i < a.size(); i++) {
if (a.get(i).length() < smallest) {
smallest = a.get(i).length();
position = i;
}
}
return position;
}
public static List<String> remove_minimum_length(List<String> a) {
int index = find_minimum_length(a);
if (index != -1) {
a.remove(index);
}
return a;
}
将您的 isEmpty()
调用放在 for 循环之外。
if(A.isEmpty()) return -1;
for(int i = 0; i<A.size(); i++)
{
if(A.get(i).length()<smallest)
{
smallest = A.get(i).length();
int shortt = A.indexOf(A.get(i));
position = shortt;
}
}