Java 自增长数组
问题是实现三种方法Java 自增长数组,java,arrays,Java,Arrays,问题是实现三种方法get(int index),set(intindex),以及构造函数SelfGrowingArray(),以便生成主方法中显示的句子。当它编译时,我得到了一个ArrayIndexOutofBoundsException,具体来说,这个错误是: [null, null, null, null, null, null, null, null, null, null, null, null, null, null, You don't know you're beautiful]
get(int index)
,set(intindex)
,以及构造函数SelfGrowingArray()
,以便生成主方法中显示的句子。当它编译时,我得到了一个ArrayIndexOutofBoundsException
,具体来说,这个错误是:
[null, null, null, null, null, null, null, null, null, null, null, null, null, null, You don't know you're beautiful]
[null, null, null, null, null, null, null, null, null, null, null, null, null, null, You don't know you're beautiful, null, null, null, null, null, null, What doesn't kill you makes you stronger.]
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -14
这是我的代码,请帮助:
public class SelfGrowingArray {
private Object[] data;
public SelfGrowingArray()
{
data = new Object[0];
}
public void set(int index, Object value)
{
if (index >= data.length) {
Object[] newArray = new Object[index + 1];
for (int i = 0; i < data.length; i++) {
newArray[i] = data[i];
}
data = newArray;
}
data[index] = value;
}
public Object get(int index)
{
if (index >= data.length)
return null;
return data[index];
}
public String toString()
{
if (data == null)
{
return "null";
}
int iMax = data.length - 1;
if (iMax == -1)
{
return "[]";
}
StringBuilder b = new StringBuilder();
b.append('[');
for (int i = 0; ; i++)
{
b.append(data[i]);
if (i == iMax)
{
return b.append(']').toString();
}
b.append(", ");
}
}
public static void main(String[] args) {
SelfGrowingArray myList = new SelfGrowingArray();
myList.set(14, "You don't know you're beautiful");
System.out.println(myList);
myList.set(21, "What doesn't kill you makes you stronger.");
System.out.println(myList);
System.out.println("myList.get(-14) " + myList.get(-14));
System.out.println("myList.get(14) " + myList.get(14));
System.out.println("myList.get(15) " + myList.get(15));
System.out.println("myList.get(31) " + myList.get(31));
System.out.println("myList.get(32) " + myList.get(32));
}
}
公共类自增长阵列{
私有对象[]数据;
公共自增长阵列()
{
数据=新对象[0];
}
公共无效集(整数索引、对象值)
{
如果(索引>=data.length){
Object[]newArray=新对象[index+1];
对于(int i=0;i=data.length)
返回null;
返回数据[索引];
}
公共字符串toString()
{
如果(数据==null)
{
返回“null”;
}
int iMax=data.length-1;
如果(iMax==-1)
{
返回“[]”;
}
StringBuilder b=新的StringBuilder();
b、 附加('[');
对于(int i=0;i++)
{
b、 附加(数据[i]);
如果(i==iMax)
{
返回b.append(']').toString();
}
b、 附加(“,”);
}
}
公共静态void main(字符串[]args){
自生长阵列myList=新的自生长阵列();
myList.set(14,“你不知道你很美”);
System.out.println(myList);
myList.set(21,“不杀你的东西会让你更强大。”);
System.out.println(myList);
System.out.println(“myList.get(-14)”+myList.get(-14));
System.out.println(“myList.get(14)”+myList.get(14));
System.out.println(“myList.get(15)”+myList.get(15));
System.out.println(“myList.get(31)”+myList.get(31));
System.out.println(“myList.get(32)”+myList.get(32));
}
}
线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:-14
问题在于:
myList.get(-14)
无法访问小于0的索引。修改get
方法以支持负索引:
public Object get(int index) {
if (index >= data.length || index < 0) {
return null;
}
return data[index];
}
公共对象获取(int索引){
如果(索引>=data.length | |索引<0){
返回null;
}
返回数据[索引];
}
线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:-14
问题在于:
myList.get(-14)
无法访问小于0的索引。修改get
方法以支持负索引:
public Object get(int index) {
if (index >= data.length || index < 0) {
return null;
}
return data[index];
}
公共对象获取(int索引){
如果(索引>=data.length | |索引<0){
返回null;
}
返回数据[索引];
}
正如它所说,在get方法中尝试从索引[-14]检索值时出现异常,您应该检查索引值是否不低于零
public Object get(int index)
{
if (index >= data.length || index < 0)
return null;
return data[index];
}
公共对象获取(int索引)
{
如果(索引>=data.length | |索引<0)
返回null;
返回数据[索引];
}
正如它所说,在get方法中尝试从索引[-14]检索值时出现异常,您应该检查索引值是否不低于零
public Object get(int index)
{
if (index >= data.length || index < 0)
return null;
return data[index];
}
公共对象获取(int索引)
{
如果(索引>=data.length | |索引<0)
返回null;
返回数据[索引];
}
你试过使用调试器吗?你的toString()
方法太可怕了!对于John3136,为了公平起见,我在问题中指定了我需要实现自己的方法。哇,我会严肃地质疑给你那种toString
方法的人的能力。我的教授哈哈,大家都知道他把事情弄得过于复杂,无法测试我们的技能。你试过使用调试器吗?你的toString()
方法太可怕了!对于John3136,为了公平起见,我在问题中指定了我需要实现自己的方法。哇,我会严肃地质疑给你那种toString
方法的人的能力。我的教授哈哈,众所周知,他把事情弄得过于复杂,无法测试我们的能力skills@JimGarrison这段代码没有问题(我找不到)@JimGarrison这段代码没有问题(我找不到)这段代码如何“支持负索引”?也许他来自另一种语言,负索引从数组末尾开始计数?@JimGarrison对负索引的支持意味着在获取负索引时返回null
,而不仅仅是让程序崩溃。这在哪里有文档记录?为什么一定要这样?@JimGarrison如果你不喜欢它,请发布一个答案并证明我们错了:)。你对想要什么做了一个可能不正确的假设。请看我在原帖上的问题。这是如何“支持负索引”的?也许他来自另一种语言,负索引从数组末尾开始计数?@JimGarrison对负索引的支持意味着在获取负索引时返回null
,而不仅仅是让程序崩溃。这在哪里有文档记录?为什么一定要这样?@JimGarrison如果你不喜欢它,请发布一个答案并证明我们错了:)。你对想要什么做了一个可能不正确的假设。请看我的问题在原来的帖子上。