Hallo,
Ich muss die folgende Aufgabe machen:
"Schreiben Sie eine Prozedur replaceAll, welche zwei int Werte x und y sowie ein Array von int-Werten nimmt. Die Prozedur soll dann alle Vorkommen von x im gegebenen Array durch y ersetzen."
Also ich hab folgendes gemacht :
public class AL {
static Scanner reader = new Scanner (System.in);
static ArrayList<Integer> array = new ArrayList<Integer>();
public static void main (String[] args)
{
System.out.println("Please enter an array of numbers, type in 0 when finished!");
int in = reader.NextInt();
while (in != 0) {
array.add(in);
in = reader.NextInt();
}
for (int i : array) {
System.out.println(i);
}
}
}
So, wie kann ich jetzt ein int x und ein int y geben, sodass ich die Prozedur replaceAll verwenden kann. Wäre schön wenn Sie mir helfen können . Vielen Dank im Voraus!
In der Aufgabe steht nirgendwo das die Werte eingegeben werden müssen. Definiere einfach einfach ein festes Array mit Inhalt und feste Werte für x und y und schreibe dann die replaceAll() Methode um die es eigentlich geht.
NAja laut Aufgabe sollst du die Prozedur replaceAll ja selber schreiben und nicht die fertige aus der Java Lib benutzen. Das wäre ja ein wenig einfach oder?
@DerWissende Warum tust du mir das immer an?
Bitte dies ist ein Anfängerforum und nicht deine Spielwiese. Wenn du schon Code postest - dazu auch noch Java 8 Features - dann bitte (ich bitte dich inständig) richtigen Code.
Wenn schon, dann einen richtigen filter-Stage einbauen und nicht die Filterlogik im forEach-Block:
Ahja es macht keinen Sinn extra eine Stream-Pipeline zu eröffnen, wenn man einfach System.out.println aufrufen kann. Für jemanden, der jedesmal über Performance/Overhead spricht, sollte das doch klar sein.
An Filter hatte ich auch gedacht, aber dann verworfen.
Mit replaced erstellst du ein zusätzliches Array.
Also der Filter- und Stream.of-Einwand ist berechtigt.
Sonst zur eigentlichen Aufgabe habe ich einen Flowchart erstellt (darin ist der Programmablauf [ohne implizite "Schleifen"] zu erkennen).
Klar, weil es eben non-interfered werden sollte und wenn man eben das Array darunter verändert kann man bei parallelen Streams böse Überraschungen erleben. Darum sollte man funktional side-effect frei Programmieren und auch mal ein neues Array erstellen.
Was ich eigentlich damit ausdrücken wollte ist, dass es ok ist Java 8 Features zu posten, aber eben sehr vorsichtig. Denn speziell Anfänger nehmen Code auf C&P Basis, verstehen den Code aber erst viel später und lernen es dann auch falsch.
NAja laut Aufgabe sollst du die Prozedur replaceAll ja selber schreiben und nicht die fertige aus der Java Lib benutzen. Das wäre ja ein wenig einfach oder?
In die Aufgabenstellung steht dass ich nur '' import java.util.Arrays '' benutzen kann. Btw was meinst du mit 'selber schreiben' ?
DerWissende und Flown - Vielen Dank für die Information, aber es ist ein bisschen kompliziert für mich ;/