Lesen von Interfaces (Programm Vervollständigen)

Rudi231

Mitglied
Hallo liebe Community, ich habe ein Problem mit einem bestimmten Java-Programm, welches unten steht.
Das Programm soll eine bestimme Ausgabe erzeugen, die sich unter dem Code befindet.
Ich verstehe nicht was man ergänzen soll damit die Ausgabe richtig funktioniert.
Ich weiß nur, dass die Variablen x1, x2 und x3 nicht gelesen werden, aber warum kann ich nicht nachvollziehen.

Über Hilfestellungen würde ich mich freuen.
Gruß Rudi 🙂

Javascript:
interface A{
    public void makeit(int i);
}
interface X{
    public void doit(A a);
}
public class Hier2{
    public static void main(String[] args) {
        X x1 = new Y(2);
        X x2 = new Y(20);
        X x3 = new Z();
        X[] field = {x1,x2,x3,x2,x3};
        for(X x : field)
            x.doit(i ->System.out.println(i*2));
        for(X x : field)
            x.doit(i ->System.out.println(i*3));
    }
}

Ausgabe soll sein:
Y 4
Y 40
Z 26
Y 42
Z 26
Y 9
Y 66
Z 39
Y 69
Z 39
 
Naja... die Aufgabenstellung lautet ja sicherlich nicht:
"Schreiben Sie ein Programm, welches genau die folgende Ausgabe [snip] erzeugt."
In diesem Fall wäre das Programm halt:
Java:
System.out.println("Y 4");
System.out.println("Y 40");
System.out.println("Z 26");
System.out.println("Y 42");
System.out.println("Z 26");
System.out.println("Y 9");
System.out.println("Y 66");
System.out.println("Z 39");
System.out.println("Y 69");
System.out.println("Z 39");
Wie lautet denn die Aufgabenstellung ganz genau?
 
Naja... die Aufgabenstellung lautet ja sicherlich nicht:
"Schreiben Sie ein Programm, welches genau die folgende Ausgabe [snip] erzeugt."
In diesem Fall wäre das Programm halt:
Java:
System.out.println("Y 4");
System.out.println("Y 40");
System.out.println("Z 26");
System.out.println("Y 42");
System.out.println("Z 26");
System.out.println("Y 9");
System.out.println("Y 66");
System.out.println("Z 39");
System.out.println("Y 69");
System.out.println("Z 39");
Wie lautet denn die Aufgabenstellung ganz genau?

Die Aufgabenstellung besagt, dass das Programm welches ich oben hinzugefügt habe zu meiner Frage, die darunter stehende Ausgabe produzieren soll.
Ich soll also das Programm irgendwie vervollständigen, sodass diese bestimmte Ausgabe ausgeben wird, weil sie eben nichts ausgibt ohne Ergänzungen.
 
Die Aufgabenstellung besagt, dass das Programm welches ich oben hinzugefügt habe zu meiner Frage, die darunter stehende Ausgabe produzieren soll.
Ich soll also das Programm irgendwie vervollständigen, sodass diese bestimmte Ausgabe ausgeben wird, weil sie eben nichts ausgibt ohne Ergänzungen.
Das ist doch ne dämliche Aufgabenstellung, da das Auszugebende von überhaupt keinen Umgebungsparametern/Kommandozeilenargumenten abhängt. Passe also das Programm so an:
1. lösche alles, was in dem Body der main-Methode geschrieben steht
2. füge das, was ich oben geschrieben habe, da rein
Solved.
 
Gesetzt den Fall, dass das wirklich der gesamte Code ist, solltest Du Dich fragen, was "new Y" und "new Z" sein soll und warum das Interface 'A' nicht benutzt wird!!
 
Den Code kannst du natürlich unverändert lassen.
Du musst nur zwei Klassen hinzufügen:
Java:
class Y implements X {
  // ...
}

class Z implements X {
  // ...
}
 
Ich muss natürlich @httpdiggest Recht geben - das wäre die einfache Lösung, so die Aufgabe so formuliert sein sollte ... Aber ich vermute auch, dass die eigentliche Aufgabe schlicht ist, dass hier Y und Z zu implementieren sind.

Und der Hinweis bezüglich "warum wird das Interface A nicht benutzt" würde ich anders formulieren: Wie wird das Interface A benutzt? Was man als Übergabe sieht, sieht ja nach einem Lambda Ausdruck aus (Dieses "i -> System.out.println(i*3)") und da ist dann die wichtige Frage, wie denn so ein Lambda Ausdruck ein "A" sein kann - denn die Methode doit erwartet ja ein A ...

Damit habe ich schon recht viel vorgegeben denke ich mal ... Denn was die Klassen implementieren müssen, wird ja durch das Interface vorgegeben. Und dann muss man sich nur anschauen, wie man aus der übergebenen Werten im Konstruktor von Y die jeweiligen Zahlen zustande kommen können ...
 

Zurück
Oben