- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用名为 arrayList
的类时遇到了问题,该类表示对象列表并支持通过数字位置索引随机访问其对象。
解决了 toString()
和 size()
的问题后,我遇到了一个问题,即我没有初始化我的成员数组;仅初始化区域设置变量。然而,我的印象是我所做的修改应该可以解决这个问题。
public Object get(int a) {
if (a < 0 || a >= logicalSize) {
throw new IndexOutOfBoundsException("Positions must be from position 0 to position "+
(logicalSize - 1));
}
else {
return array[a];
}
}
但我不应该声明private static Object[] array = new Object[5];
解决这个问题吗?
我当前收到一个抛出异常的错误,告诉我我的位置必须从 0 到 -1,表明它尚未创建。
完整代码:
public class Tester {
public static void main(String [] args)
{
arrayList a1, a2;
a1 = new arrayList();
a2 = new arrayList(5);
a2.size();
System.out.println(a1.toString());
//System.out.println(a2.toString());
}
}
public class arrayList
{
private int logicalSize;
private static Object[] array = new Object[0];
private Object[] original;
private Object removedElement;
public arrayList()
{
Object[] array = new Object[]{null,null,null,null,null};
}
public arrayList(int i)
{
logicalSize = i;
Object[] array = new Object[logicalSize - 1];
}
public arrayList(Object[] array)
{
logicalSize = array.length;
Object[] copyArray = array;
}
public String toString(Object[] array)
{
String str = " ";
for(int a = 0; a < logicalSize; a++)
{
str = str + array[a];
}
str = str + "\nSize: " + size();
return str;
}
public int size()
{
int length = array.length;
return length;
}
}
非常感谢,Packerfan504
最佳答案
首先,您应该遵循 Java 类名称约定。它应该以大写字母开头并采用驼峰式命名法。
array
当然应该不是 static
。当您声明成员 static
,这意味着它在所有实例之间共享
在构造函数中,您设置本地变量而不是成员。
// remove Object[] in front
array = new Object[]{null,null,null,null,null};
数组的构造函数未设置成员 array
。
public arrayList(Object[] array)
{
logicalSize = array.length;
//Object[] copyArray = array;
this.array = array;
}
这不会执行任何复制:成员引用作为参数传递的数组。我想要某种“复制构造函数”,您需要实际实例化一个新数组并复制每个元素。或者使用 Arrays.copyOf()
.
您应该覆盖 toString()
方法来自java.langObject
具有正确的签名(为什么将数组作为参数传递?)。 Java 中的所有类都隐式扩展 Object
类(class)。
您应该区分 Object[]
数组大小 - 这是在需要增加数组之前拥有的潜在槽数,以及反射(reflect)您放入数组中的元素数量的逻辑大小。这里你将逻辑大小设置为array.length,这只是多余的信息。
编辑其他建议
在以大小作为参数的构造函数中,创建一个 (ticalSize-1) 数组。为什么?
在默认构造函数中,您不会初始化 logicalSize
,然后将其设置为 0
。对我来说没问题,但是,为什么你要把它设置为 i
在构造函数中以大小作为参数?那么在 a1.get(0)
中就很正常了:
if (a < 0 || a >= logicalSize) {...}
是 true
并抛出异常。
我建议您澄清 logicalSize
的角色(对我来说)这是 ArrayList
中实际对象的数量。请注意,在您的测试中,您还没有在数组中放入任何东西。即使你有一个可以容纳 5 个对象的内部数组,直到你 add(...)
有事,打电话get(0)
应该抛出异常。
关于java - 初始化成员变量而不是实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29305828/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How to nest OR statements in JavaScript? 有没有办法做到这一点:
在 JavaScript 中有没有办法让一个变量总是等于一个变量?喜欢var1 = var2但是当var2更新,也是var1 . 例子 var var1 = document.getElementBy
我正在努力理解这代表什么 var1 = var2 == var3 我的猜测是这等同于: if (var2 == var3): var1 = var2 最佳答案 赋值 var1 = var2
这个问题已经有答案了: What does the PHP error message "Notice: Use of undefined constant" mean? (2 个回答) 已关闭 8
我在临时表中有几条记录,我想从每条记录中获取一个值并将其添加到一个变量中,例如 color | caption -------------------------------- re
如何将字符串转为变量(字符串变量--> $variable)? 或者用逗号分隔的变量列表然后转换为实际变量。 我有 2 个文件: 列名文件 行文件 我需要根据字符串匹配行文件中的整行,并根据列名文件命
我有一个我无法解决的基本 php 问题,我也想了解为什么! $upperValueCB = 10; $passNodeMatrixSource = 'CB'; $topValue= '$uppe
这可能吗? php $variable = $variable1 || $variable2? 如果 $variable1 为空则使用 $variable2 是否存在类似的东西? 最佳答案 PHP 5
在 Perl 5.20 中,for 循环似乎能够修改模块作用域的变量,但不能修改父作用域中的词法变量。 #!/usr/bin/env perl use strict; use warnings; ou
为什么这不起作用: var variable; variable = variable.concat(variable2); $('#lunk').append(variable) 我无法弄清楚这一点
根据我的理解,在32位机器上,指针的sizeof是32位(4字节),而在64位机器上,它是8字节。无论它们指向什么数据类型,它们都有固定的大小。我的计算机在 64 位上运行,但是当我打印包含 * 的大
例如: int a = 10; a += 1.5; 这运行得很完美,但是 a = a+1.5; 此作业表示类型不匹配:无法从 double 转换为 int。所以我的问题是:+= 运算符 和= 运算符
您好,我写了这个 MySQL 存储过程,但我一直收到这个语法错误 #1064 - You have an error in your SQL syntax; check the manual that
我试图在我的场景中显示特定的奖牌,这取决于你的高分是基于关卡的目标。 // Get Medal Colour if levelHighscore goalScore { sc
我必须维护相当古老的 Visual C++ 源代码的大型代码库。我发现代码如下: bIsOk = !!m_ptr->isOpen(some Parameters) bIsOk的数据类型是bool,is
我有一个从 MySQL 数据库中提取的动态产品列表。在 list 上有一个立即联系 按钮,我正在使用一个 jquery Modal 脚本,它会弹出一个表单。 我的问题是尝试将产品信息变量传递给该弹出窗
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: What is the difference between (type)value and type(va
jQuery Core Style Guidelines建议两种不同的方法来检查变量是否已定义。 全局变量:typeof variable === "undefined" 局部变量:variable
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: “Variable” Variables in Javascript? 我想肯定有一种方法可以在 JavaScrip
在语句中使用多重赋值有什么优点或缺点吗?在简单的例子中 var1 = var2 = true; 赋值是从右到左的(我相信 C# 中的所有赋值都是如此,而且可能是 Java,尽管我没有检查后者)。但是,
我是一名优秀的程序员,十分优秀!