Vulpecula
Commander
- Registriert
- Nov. 2007
- Beiträge
- 2.245
Hallo!
Ich hänge gerade auf einem Problem fest und könnte einen Tipp gebrauchen. Und zwar übergebe ich ein Array als Parameter, allerdings scheint es mir, als würde das Array in der aufgerufenen Methode das übergebene Array überschreiben.
Der Aufruf erfolgt ganz regulär. Das (statische) Array habe ich vorher schon initialisiert und mit Werten gefüllt:
Der Aufruf der Methode:
Sollte so nicht ein neues Array angelegt werden, das via Call-By-Value eine Kopie des übergeben Arrays ist?
Ich hänge gerade auf einem Problem fest und könnte einen Tipp gebrauchen. Und zwar übergebe ich ein Array als Parameter, allerdings scheint es mir, als würde das Array in der aufgerufenen Methode das übergebene Array überschreiben.
Der Aufruf erfolgt ganz regulär. Das (statische) Array habe ich vorher schon initialisiert und mit Werten gefüllt:
Code:
meineMethode(inputArray);
Der Aufruf der Methode:
Code:
public static void meineMethode(int[] neuesArray)
{
...
}
Sollte so nicht ein neues Array angelegt werden, das via Call-By-Value eine Kopie des übergeben Arrays ist?
(Ja, die äußere Schleife von sort() ist Murks, aber das weiß ich. )
Code:
package main;
import java.util.Scanner;
public class Main
{
public static int[] inputIntegerArray = new int[6];
public static int[] outputIntegerArray = new int[6];
public static void main(String[] args)
{
getUserInput();
sort(inputIntegerArray);
printResults();
}
public static void sort(int[] feld)
{
int tmp;
do
{
tmp = feld[0];
for (int j = 1; j < feld.length; j++)
{
if (feld[j] < feld[j-1])
{
tmp = feld[j-1];
feld[j-1] = feld[j];
feld[j] = tmp;
}
}
}
while (tmp != feld[0]);
outputIntegerArray = feld;
}
public static void getUserInput()
{
Scanner input = new Scanner(System.in);
for (int counter=0; counter<inputIntegerArray.length; counter++)
{
while (true)
{
System.out.print("Bitte die " + (counter+1) + ". ganze Zahl eingeben: ");
String inputString = input.next();
try
{
inputIntegerArray[counter] = Integer.parseInt(inputString);
break;
}
catch (NumberFormatException ne)
{
System.out.println("Eingabe war keine ganze Zahl!");
}
}
}
input.close();
}
private static void printResults()
{
System.out.print("Eingegebene Reihenfolge der ganzen Zahlen: ");
for (int counter=0; counter<inputIntegerArray.length; counter++)
{
System.out.print(inputIntegerArray[counter] + " ");
}
System.out.println();
System.out.print("Reihenfolge Zahlen nach der Sortierung: ");
for (int counter=0; counter<outputIntegerArray.length; counter++)
{
System.out.print(outputIntegerArray[counter] + " ");
}
}
}