我想知道,如果我创建一个返回数组的方法。我怎么能迟到主要或另一种方法访问该数组中的特定点?
例如:
public static int[] deleteElement(int[]thing, int target){
int[]newThing;
newThing=thing;
int y=0;
for (int i=0; i<thing.length; i++){
if (thing[i]==target){
newThing[y]=thing[i+1];}
y++;
}
return newThing;
}
public static int test(int[]someArray){
//here how can i access newThing[i]?
}
非常感谢
答案 0 :(得分:0)
如果您尝试将数组传递给另一个方法,请执行以下操作:
int [] myArray = yourClass.deleteElement(thing, target)
yourClass.test(myArray);
如果您尝试访问它,则按照分配方式进行操作:
elementYouWantToAccess = 2 //or 3, or 6, or whatever element you want
someArray[elementYouWantToAccess];
从技术上讲,你可以说:
someArray[1]; //this would access the element at position 1
。
您使用i
所做的就是列出元素位置。通过选择位置来访问数组。
如果您不知道所需的确切元素,可以像这样迭代整个数组:
public static int test(int[]someArray){
for(int i=0; ii < someArray.length; i++){
if(someArray[i] == someCondition){
//do something to someArray[i]
}
}
}
直到找到所需的元素,然后将其分配给变量,或者根据需要执行任何操作。
答案 1 :(得分:0)
您需要致电deleteElement(int[]thing, int target)
,并返回int[]
。您无法访问newThing
之外的deleteElement(int[]thing, int target)
,因为它是在方法内部声明的。所以:
int[] list = deleteElement(ra,target); //list = newThing
list[0], list[1], ...
因此,为了从方法外部访问数组中的元素,必须将返回的数组分配给类/方法中的某些内容,然后对该变量进行操作。
答案 2 :(得分:0)
您真正要问的问题是如何操作数组的子数组。毕竟,您知道如何访问特定元素:a[i]
符号。
您可以使用批量方法类:Array.copy
,Array.copyOfRange
和System.arrayCopy
。但即使使用这些方法,您也需要做太多工作,特别是如果您必须删除数组中的一些项目。你做事的方式可能是O(N ^ 2)操作。改为使用列表。
public static Integer[] deleteElement(int[] array, int valueToDelete){
List<Integer> list = new ArrayList<>();
for (int n: array) {
if (n != valueToDelete) {
list.add(n);
}
}
return Arrays.toArray(new int[0]);
}
但即便如此也是有问题的。您应该首先使用某种类型的List
,并且由于您要在中间删除,您可能需要LinkedList
。
public static <T> void deleteValue(List<T> list, T value) {
for (Iterator<T>it = list.iterator(); it.hasNext();) {
if (value.equals(it.next()) {
it.delete();
}
}
}