Wenn ich es einem aktiven Ingenieur zeige, sieht er normalerweise unbeholfen aus und sagt: "Ich denke, es ist schwierig für Neulinge." Es scheint, dass Wörter und Ausdrücke schwierig sein können.
Dies wurde als Lernübung für Neulinge erstellt, die die Grundlagen von Java verstehen (denken). Da es sich um Bildungszwecke handelt, wird nicht davon ausgegangen, dass Sie von Anfang an alles beantworten können. Das Zeitlimit ist angemessen. (Leute, die alle ohne Schwierigkeiten beantworten können, werden entsprechend unterrichten, während sie eine Funktion verlassen) Ich möchte auch herausfinden, ob ich ein Wort verstehen kann, das ich nicht kenne, also wage ich es, ein Wort zu verwenden, das ich wahrscheinlich nicht kenne. Dies dient dazu, bei Bedarf eine Anleitung zu geben, während der Ansatz bei der Beantwortung beachtet wird, Punkte blockiert werden, Fehler gemacht werden usw. und Referenzinformationen für die Entscheidung über zukünftige Bildungspolitiken zu erhalten.
Erstellen Sie eine Klasse "exam.Exam1" mit einer Instanzmethode "Practice (final String n)", die sich wie folgt verhält.
--Wenn die Zeichenfolge n keine Zahl größer oder gleich 1 ist, wird die Zeichenfolge "Fehler" an die "Standardfehlerausgabe" ausgegeben und die Verarbeitung unterbrochen. --Zählen Sie von 1 bis n und geben Sie die Zahlen in "Standardausgabe" getrennt durch Zeilenumbrüche aus.
Erstellen Sie eine Klasse "exam.Exam2", die eine Modifikation der in "Issue.1" erstellten Klasse "Exam1" ist, um die folgenden Bedingungen zu erfüllen.
--Wenn die Zeichenfolge n keine Zahl größer oder gleich 1 ist, wird die Ausnahme "IllegalArgumentException" ausgelöst.
Implementieren Sie die Schnittstelle "Exam.FizzBuzz" wie im folgenden Code gezeigt, und erstellen Sie "Exam3.Exam1" und "Exam3.Exam2", damit die folgenden Bedingungen erfüllt sind.
--Der Rückgabewert List
java:exam.FizzBuzz.java
package exam;
// import … (Kürzung);
public interface FizzBuzz {
public List<String> fizzBuzz(final int n);
}
Erstellen Sie eine abstrakte Klasse "Prüfung.AbstractFizzBuzz", die die folgenden Bedingungen erfüllt, und "Prüfung4.Exam1" und "Prüfung4.Exam2", die sie erben.
Erstellen Sie "Prüfung5.Exam1" und "Prüfung5.Exam2", die von der abstrakten Klasse "Prüfung.AbstractFizzBuzz" erben, wie im folgenden Code gezeigt. Die Bedingungen für isFizz und isBuzz sind jedoch dieselben wie die in "Issue.1, Issue.2" implementierten Bedingungen.
java:exam.FizzBuzzStrategy.java
package exam;
// import … (Kürzung);
public interface FizzBuzzStrategy {
boolean isFizz(final int num); //Stimmt, wenn Fizz
boolean isBuzz(final int num); //Wenn es Buzz wahr wird
String fizz(); //Gibt Fizz zurück
String buzz(); //Gibt Buzz zurück
String both(); //Gibt FizzBuzz zurück
}
java:exam.AbstractFizzBuzz.java
package exam;
// import … (Kürzung);
public abstract class AbstractFizzBuzz implements FizzBuzzStrategy {
@Override
String fizz() { return "Fizz"; }
@Override
String buzz() { return "Buzz"; }
@Override
String both() { return "FizzBuzz"; }
}
Betrachten Sie einen "exam.FizzBuzzRunner", wie im folgenden Code gezeigt. Bitte implementieren Sie die Ausführungsmethode so, dass das Ausführungsergebnis dem folgenden "Ausführungsbeispiel" entspricht. Bei Bedarf können Sie die in "Issue.5-1" erstellte Klasse ändern.
java:exam.FizzBuzzRunner.java
package exam;
// import … (Kürzung);
public class FizzBuzzRunner {
public static void main(String[] args) {
final FizzBuzzRunner runner = new FizzBuzzRunner();
final List<String> exam1FizzBuzz = runner.run(21, new exam5.Exam1());
print(exam1FizzBuzz);
System.out.println("----------");
final List<String> exam2FizzBuzz = runner.run(16, new exam5.Exam2());
print(exam2FizzBuzz);
}
private static void print(final List<String> src) {
for (String s : src) {
System.out.println(s);
}
}
public List<String> run(final int n, final FizzBuzzStrategy strategy) {
//* Hier implementiert
}
}
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
----------
1
Fizz
FizzBuzz
4
Fizz
Buzz
Fizz
8
Buzz
10
Fizz
Buzz
Fizz
14
Buzz
16
17
Buzz
Fizz
20
Buzz
Recommended Posts