【发布时间】:2022-11-17 12:37:33
【问题描述】:
为什么我不能将 ArrayList 大小保存为变量?
public static ArrayList <Integer > merge(ArrayList <Integer > list1,
ArrayList <Integer > list2 ) {
if (list1.size() >= list2.size()) {
int maxSize = list1.size();
} else {
int maxSize = list2.size();
}
for (int i = 0; i < maxSize; i++) {
if (i <= list2.size()) {
int nextInList2 = list2.get(i);
list1.add(i, nextInList2);
}
}
System.out.println(list1);
return (list1);
在: int maxSize = list1.size(); 我假设它没有按照我的意愿保存变量。
我假设
list1.size()
是一个整数
【问题讨论】:
-
当然你可以保存它们,你正在这样做,但是你在那些 if-else 块中声明了这些整数,这意味着它们不存在于它们的范围之外。在 if 之前声明变量,然后在 if-else 块中分配值即可解决您的问题
-
您在花括号内定义变量。它不存在于那些大括号之外。这称为变量的范围。
-
您需要更多地了解范围。目前你的变量 maxSize 只在 if 的范围内工作。
-
你误解了你得到的错误。当然,您可以将大小保存在一个 in t 变量中,并在代码中的 2 个位置执行此操作。但是,您的错误是您尝试在其范围之外使用那些 maxSize 变量。见What is 'scope' in Java?