Java-Programmierübungen für Neulinge, die bei aktiven Ingenieuren unbeliebt sind

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.

Annahme

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.

Herausforderung. 1

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.

Herausforderung. 2

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.

Herausforderung 3

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 ist eine Zeile (ohne Zeilenumbrüche), die standardmäßig von der in "Issue.1, Issue.2" erstellten "Practice" -Methode "Exam.Exam1" und "Exam.Exam2" ausgegeben wird. Mach es zu einem Element. --Für das Argument n wird eine leere Liste zurückgegeben, wenn die Methode "Practice" keine Standardausgabezeile enthält.

java:exam.FizzBuzz.java


    package exam;
//    import … (Kürzung);
    public interface FizzBuzz {
        public List<String> fizzBuzz(final int n);
    }

Herausforderung. 4

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.

Herausforderung.5-1

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"; }
    }

Herausforderung .5-2

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
        }
    }

Ausführungsbeispiel:

        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

Java-Programmierübungen für Neulinge, die bei aktiven Ingenieuren unbeliebt sind
Erste Schritte mit Ruby für Java-Ingenieure
C # Spickzettel für Java-Techniker
Aktivieren Sie OpenCV mit Java8. (Für mich)
Grundlagen der Java-Programmierung - Ich möchte ein Dreieck mit einer for-Anweisung ① anzeigen
Grundlagen der Java-Programmierung - Ich möchte ein Dreieck mit einer for-Anweisung ② anzeigen
Lernen Sie aus "Na und", den Grundlagen von Java [für Anfänger]
Java Programming Style Guide für die Java 11-Ära
Tipps zur Interoperabilität mit Kotlin zum Senden an Java-Entwickler
[Java] So testen Sie, ob es in JUnit null ist
Links & Memos für den Einstieg in Java (für mich)
Fragen Sie n Werktage später bei JAVA nach
Einfaches Hindernisrennen mit Java-Verarbeitung
Für Java-Ingenieure, die ab sofort Kotlin starten
Docker Container Operations mit Docker-Client API für Java
Erste Schritte mit Groovy für problematische Java-Ingenieure
Programmierung mit dem direkten Summentyp in Java (Nachrichten)