Im folgenden Code habe ich die Größe eines Arrays geändert, dessen Länge um 5 Elemente erhöht wurde. Länge wird korrekt angezeigt. Aber wenn ich eine Schleife ausführen, um die Elemente des Arrays anzuzeigen, werden nur initialisierte Elemente angezeigt. Wie kann ich alle Elemente anzeigen?Warum wird Array nicht in Java gedruckt, wenn es teilweise initialisiert wird?
package arraychallenge;
import java.util.*;
public class ArrayChallenge {
public static void main(String[] args) {
Scanner CountScanner = new Scanner(System.in);
System.out.println("How many integers you have in your list? ");
int count = CountScanner.nextInt();
System.out.println("Enter the integers now - ");
int[] MyArray = getIntegers(count);
System.out.println("Unsorted Array is present here:");
for (int i = 0; i < MyArray.length; i++) {
System.out.println(MyArray[i]);
}
sortArray(MyArray);
printArray(MyArray);
resizeArray(MyArray, MyArray.length, 5);
printArray(MyArray);
}
public static int[] getIntegers(int count) {
Scanner MyScanner = new Scanner(System.in);
int[] MyArray = new int[count];
for (int i = 0; i < MyArray.length; i++) {
MyArray[i] = MyScanner.nextInt();
}
return MyArray;
}
public static void sortArray(int[] MyArray) {
int temp;
for (int i = 0; i < MyArray.length; i++) {
for (int j = i+1; j < MyArray.length; j++) {
if (MyArray[i] > MyArray[j]) {
temp = MyArray[i];
MyArray[i] = MyArray[j];
MyArray[j] = temp;
}
}
}
}
public static void printArray(int[] MyArray) {
System.out.println("Sorted Array is present here:");
for (int i = 0; i < MyArray.length; i++) {
System.out.println(MyArray[i]);
}
}
public static void resizeArray(int[] MyArray, int count, int increase){
int[] tempArray = MyArray;
MyArray = new int[count+increase];
System.out.println("length of MyArray is now " + MyArray.length);
for (int i = 0; i < count; i++) {
MyArray[i] = tempArray[i];
}
}
}
Sie können den Verweis des Aufrufers auf 'MyArray' nicht ändern (Ihre Änderungen sind lokal für' resizeArray'). –
Versuchen Sie, 'tempArray' von' resizeArray' zurückzugeben und es 'MyArray' zuzuweisen. – MadProgrammer
Jetzt ändern Sie in der resizeArray-Methode das Array-Objekt nicht genau. Was Sie wissen müssen, ist Folgendes: Wenn Sie ein Objekt an eine Methode übergeben, übergeben Sie einfach die Referenz an dieses Objekt. In der resizeArray-Methode erstellen Sie also ein neues Array-Objekt und weisen dieses neue Array-Objekt dem MyArray-Parameter zu. Sie können die Methode so ändern, dass das MyArray zurückgegeben wird, so dass Sie das neu erstellte Array erhalten können. – Keaz