我正在参加 Java 编程类(class),我需要有关动态数组的帮助。我环顾四周,找不到符合我的简单程度的方法。我在类里面距离不远,刚刚学习了基础知识,所以我知道的不多,但我需要知道如何制作动态数组。
以下是我们获得的两个示例程序:
public class DynamicArrayOfInt
{
private int[] data;
public DynamicArrayOfInt()
{
data = new int[1];
}
public int get(int position)
{
if (position >= data.length)
return 0;
else
return data[position];
}
public void put(int position, int value)
{
if (position >= data.length)
{
int newSize = 2 * data.length;
if (position >= newSize)
newSize = 2 * position;
int[] newData = new int[newSize];
System.arraycopy(data, 0, newData, data.length);
data = newData;
System.out.println("Size of dynamic array increased to " + newSize);
}
data[position] = value;
}
}
`
2号
import java.util.Scanner;
public class ReverseWithDynamicArray
{
public static void main(Sting[] args)
{
DyanamicArrayOfInt numbers;
int numCt;
int num;
Scanner scan = new Scanner(System.in);
numbers = new DynamicArrayOfInt();
numCt = 0;
System.out.println("Enter some postive integers; Enter 0 to end");
while (true)
{
num = scan.nextInt();
if (num <= 0)
break;
numbers.put(numCt, num);
numCt++;
}
System.out.println("\nYour numbers in reverse order are:\n");
for (int i = numCt - 1; i >= 0; i--)
{
System.out.println( numbers.get(i) );
}
}
}
第二个应该继承第一个,并允许您在输入它们后创建更多数组。但是当我使用这些数组时,它说我有一个错误,并且它说类名 ReverseWithDynamicArray
仅在明确请求注释处理时才被接受。
最佳答案
将其用于您的第一个示例程序,我在 System.arraycopy 更改了您的参数
public class DynamicArrayOfInt
{
private int[] data;
public DynamicArrayOfInt()
{
data = new int[1];
}
public int get(int position)
{
if (position >= data.length)
return 0;
else
return data[position];
}
public void put(int position, int value)
{
if (position >= data.length)
{
int newSize = 2 * data.length;
if (position >= newSize)
newSize = 2 * position;
int[] newData = new int[newSize];
System.arraycopy(data, 0, newData, 0, data.length);
data = newData;
System.out.println("Size of dynamic array increased to " + newSize);
}
data[position] = value;
}
}
关于Java 动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15891395/