我想在数组中添加一个对象,如果数组未满,则返回true,因此可以添加项,如果数组中没有项,则返回false。
我现在所拥有的,我相信只是部分正确。
private Object[] theList;
//constructors omitted
@Override
public boolean add(Object toAdd) {
for(int i=0; i < theList.length;i++){
if(toAdd != null){
theList[i] = toAdd;
}
}
return true;
}
我认为使用元素计数器将是追踪的正确方法 当前在数组中的元素数量。
如果重要,则从界面覆盖该方法。
不确定它是否根据循环和条件返回true,或者无论如何都返回true。
答案 0 :(得分:0)
您尚未初始化object[]
ObjectArray theList
。因此,它无法为此添加新元素。
我在这里使用
ArrayList
类为您的问题提供解决方案。ArrayList
是一个自动可扩展阵列,在运行时动态增加其大小。
private ArrayList<Object> theList = new ArrayList<>(); //A Auto Growable Array Increased Its Size Dynamically at Runtime.
//constructors omitted
@Override
public boolean add(Object toAdd) {
if(toAdd != null){
theList.add(toAdd);
return true; //returns true id Object is added to theList.
}else
return false; //returns false if Object is Null .
}
获取ArrayList大小的代码
theList.size() //Use This Code to know the Size of Array List.
答案 1 :(得分:0)
您好像正在尝试在数组中找到第一个null
值,如果存在这样的值,请将其替换为您的toAdd
对象并返回true。
该代码的代码如下:
private Object[] theList;
@Override
public boolean add(Object toAdd) {
for(int i=0; i < theList.length; i++) {
if(theList[i] == null){
theList[i] = toAdd;
return true;
}
}
return false;
}
如果您还希望在false
对象为toAdd
的情况下返回null
,出于性能原因,您应该在循环之前检查阵列:
@Override
public boolean add(Object toAdd) {
if (toAdd != null) {
for(int i=0; i < theList.length; i++) {
if(theList[i] == null){
theList[i] = toAdd;
return true;
}
}
}
return false;
}
显然,使用ArrayList
会更方便。
答案 2 :(得分:0)
首先,您必须初始化数组。否则它将返回一个空指针异常。这是我的代码。希望它会有所帮助...
class Demo{
static boolean result;
public static void main(String args[]){
Object ob= new Object();
result = A.add(ob);
System.out.println(result);
Object ob1= new Object();
result = A.add(ob1);
System.out.println(result);
}
}
class A{
static private Object[] theList = new Object[10];
public static boolean add(Object ob){
boolean result = false;
for(int i=0; i<theList.length; i++){
if(ob != null){
theList[i] = ob;
result = true;
}
}
return result;
}
}
答案 3 :(得分:0)
对象数组的默认值为null
。这样您就可以检查元素是否为空。
for(int i=0:i<theList.length;i++) {
if(theList[i] == null && toAdd!=null) // Element is null or not
theList[i]=toAdd;
return true;
}
return false;
如果element为null,则array仍为空,您可以在其中放置值并返回true
。
答案 4 :(得分:0)
您可能需要考虑使用ArrayList,因为它们是可扩展的,并且没有设置大小。因此,无论何时添加内容,只需增加ArrayList,而不是更改索引的值。
答案 5 :(得分:-1)
根据同行贡献者的建议,第二次编辑,另一个解决方案。我还在评论中发表了对问题的理解。请说明理解是否有任何失常。
请看一个可能的解决方案:
public class TestCode {
public static void main(String[] args) {
/*
* Question:
* I would like to add an object to an array and
* return true if the array is not full so the item can be added,
* and false if the array is full of items.
*/
Object[] objects = new Object [] {1, 2, null, 4, 5, null , 7};
SomeClass someClass = new SomeClass(objects);
// just for sake of passing;
Integer toAdd = 10;
boolean isNotFull = someClass.add(toAdd);
System.out.println("Array after adding: "+Arrays.toString(objects));
System.out.println("Array is Not full:"+isNotFull);
isNotFull = someClass.add(toAdd);
System.out.println("Array after adding: "+Arrays.toString(objects));
System.out.println("Array is Not full:"+isNotFull);
isNotFull = someClass.add(toAdd);
System.out.println("Array after adding: "+Arrays.toString(objects));
System.out.println("Array is Not full:"+isNotFull);
}
}
class SomeClass {
private Object[] theList;
//constructors omitted
public SomeClass(Object[] theList) {
this.theList = theList;
}
/*
* returns true if array is not full and element is inserted.
*/
public boolean add(Object toAdd) {
int i = 0;
boolean flag = false; // if flag is true, the array is not empty
// question says:
// "I would like to add an object to an array"
// means we need to first find an empty slot to insert in the array
for( ; i < theList.length;i++){
// to check if there is any first empty space in the array
// so that the element can be inserted.
// (finding the empty slot
if(theList[i] == null){
// to check if elements passed as an aargument itself is false
if (toAdd!=null) {
theList[i] = toAdd;
break;
}
}
}
for (;i <theList.length; i++) {
if(theList[i] == null){
flag = true;
}
}
return flag;
}
}
<强>解决方案:强> 我得到的代码输出:
Array after adding: [1, 2, 10, 4, 5, null, 7]
Array is Not full:true
Array after adding: [1, 2, 10, 4, 5, 10, 7]
Array is Not full:false
Array after adding: [1, 2, 10, 4, 5, 10, 7]
Array is Not full:false