[JAVA] Ein Programm, das die Leistung von 2 bis 100 berechnet

Einführung

Vor kurzem hatte ich in einer Vorlesung zum Programmieren an einer Universität die Aufgabe, ein "Programm zu erstellen, das den Multiplikator von 2 auf 100 berechnet", aber es war ziemlich schwierig, deshalb möchte ich das Programm als Memorandum für mich selbst verlassen.

Programm

Aktualisiert am 09.01.2019 (Aktualisierter Inhalt: Kommentar hinzufügen)

public class Report5_2_30114020{
    public static void main(String[] args) {

        //①
        int [] answerArray = new int [200];     //Ein Array, in dem das Berechnungsergebnis des Produkts gespeichert wird
        int [] copyArray = new int [200];       //Ein Array, das den Inhalt des Arrays vorübergehend kopiert

        //②
        //Array-Werte initialisieren
        for(int i=0; i<answerArray.length; i++){
            answerArray[i] = 0;
        }
        answerArray[0] = 1;

        //③
        for(int i=2; i<=100; i++){
            //④
            //Kopieren Sie das Array
            for(int j=0; j<answerArray.length; j++){
                copyArray[j] = answerArray[j];
            }
            //⑤
            //Berechnung
            int upNumber1 = 0;
            int upNumber2 = 0;
            int first = 0;
            int second = 0;
            int third = 0;
            if(i<10){
                first = i;
            }else if(i<100){
                first = i%10;
                second = i/10;
            }else{
                third = 1;
            }
            //⑥
            for(int j=0; j<answerArray.length; j++){
                int firstPlus = 0;
                int secondPlus = 0;
                int thirdPlus = 0;
                firstPlus = first * copyArray[j];
                if(j-1>=0){
                    secondPlus = second * copyArray[j-1];
                }
                if(j-2>=0){
                    thirdPlus = third * copyArray[j-2];
                }

                int sum = firstPlus + secondPlus + thirdPlus + upNumber1;

                answerArray[j] = sum % 10;

                //⑦
                //Vorbereitung zum Tragen
                if(sum <10){
                    upNumber1 = upNumber2;
                    upNumber2 = 0;
                }else if(sum < 100){
                    upNumber1 = upNumber2 + (sum)/10;
                    upNumber2 = 0;
                }else{
                    upNumber1 = upNumber2 + ((sum)/10)%10;
                    upNumber2 = (sum)/100;
                }
            }

            //⑧
            //Ergebnisse anzeigen
            int counter = 0;
            for(int j=0; j<answerArray.length; j++){
                if(answerArray[answerArray.length-1-j] != 0){
                    break;
                }
                counter++;
            }
            System.out.print(i + "Bodenbelag:");
            for(int j=0; j<answerArray.length; j++){
                if(j<counter){
                    continue;
                }
                System.out.print(answerArray[answerArray.length-1-j]);
            }
            System.out.println();
        }
    }
}

Programm Beschreibung

Aktualisiert am 09.01.2019 (Aktualisierter Inhalt: "Programmbeschreibung" hinzugefügt) Eingekreiste Zahlen (wie z. B. ①) entsprechen den im Programm geschriebenen eingekreisten Zahlen.

Programmübersicht

Dieses Programm berechnet vom 2. bis zum 100. Stock. Da ein normaler int-Typ keine große Anzahl von 100. Potenzen (158 Stellen) speichern kann, wird das Berechnungsergebnis der 100. Potenz jeweils eine Ziffer in einem Array vom int-Typ mit einer ausreichend großen Anzahl von Elementen berechnet. Die grundlegende Richtlinie besteht darin, sie zu speichern. Zu diesem Zeitpunkt tritt eine Verschleppung usw. auf, so dass die Verarbeitung etwas kompliziert sein wird.

① Bereiten Sie ein Array vor

Ein Array, in dem das Berechnungsergebnis des Produkts gespeichert wird. Da das Ergebnis der Multiplikation in den Elementen des Arrays Ziffer für Ziffer gespeichert wird, ist es erforderlich, ein Array mit einer größeren Anzahl von Elementen vorzubereiten, wenn man bedenkt, dass 100! 158 Stellen sind. copyArray ist erforderlich, wenn die Berechnung in ⑥ durchgeführt wird.

② Initialisieren Sie die Array-Werte

answerArray [n] entspricht der n + 1-ten Ziffer des Berechnungsergebnisses des Produkts. Da wir das anfängliche Berechnungsergebnis auf 1 setzen möchten, wird nur das erste Element auf 1 und die anderen Elemente zur Initialisierung auf 0 gesetzt.

③ Tatsächliche Verarbeitung

Diese for-Anweisung ist der äußerste Prozess. Die Variable i, die in dieser for-Anweisung gültig ist, entspricht der zu diesem Zeitpunkt berechneten Skalennummer. (Beispiel: In der Schleife von i = 10 wird i! Berechnet.)

④ Erstellen Sie eine Kopie des Arrays

Jedes Mal, wenn i aktualisiert wird und Schleifen erstellt werden, wird das Ergebnis der sofort berechneten Skala kopiert. (In ④ der Schleife von i = 10 bedeutet dies, dass 9! Berechnet kurz vor dem Kopieren.) Dieses kopierte Array wird später in ⑥ verwendet.

⑤ Vorbereitung der Variablen, die zur Aktualisierung der Antwort des Bodens erforderlich sind

Die Variable upNumber1 ist eine Variable, die die von einer Ziffer getragene Nummer speichert. Die Variable upNumber2 ist eine Variable, die die zweistellige Nummer speichert. Die erste ist die erste Ziffer des i-Werts, die zweite die zweite Ziffer des i-Werts und die dritte die dritte Ziffer des i-Werts. Danach wird das Produkt der Berechnungsergebnisse bis zum letzten Mal für jedes der ersten, zweiten und dritten berechnet.

⑥ Ermitteln Sie den Wert der interessierenden Ziffer

Fügen Sie das Produkt der Werte von first und copyArray [j] in eine neue Variable mit dem Namen firstPlus ein. Fügen Sie den Wert des Produkts von second und copyArray [j-1] in eine neue Variable namens secondPlus ein. Fügen Sie den Wert des Produkts von Third und CopyArray [j-2] in eine neue Variable namens ThirdPlus ein. Hier ist der Index j für den ersten, aber j-1 und j-2 unterscheiden sich für den zweiten und dritten. Zweitens und drittens sind die Zahlen und Hunderte, die die Zehnerstelle der Variablen i darstellen. Weil es die dargestellte Zahl ist. Ich denke, es wird einfacher sein, diesen Bereich zu verstehen, wenn Sie sich die Multiplikation einer mehrstelligen Zahl und einer dreistelligen Zahl vorstellen. Der Grund für die Verwendung der if-Anweisung bei der Ausgabe von secondPlus und ThirdPlus besteht darin, zu vermeiden, auf Indizes zu verweisen, die kein Array haben. Die variable Summe ist die Summe der Werte von firstPlus, secondPlus, ThirdPlus und des Übertrags, der in der vorherigen Schleife aufgetreten ist. Da die erste Ziffer davon der Wert der j + 1. Ziffer von i! Ist, wird der Rest der Summe geteilt durch 10 answerArray zugewiesen.

⑦ Bereiten Sie eine Variable vor, die den Übertrag speichert, der in der nächsten Schleife verwendet werden soll.

Da zu diesem Zeitpunkt die Summe erhalten wird, verwenden Sie diesen Wert, um eine Variable vorzubereiten, in der der Übertrag gespeichert wird, der in der nächsten Schleife verwendet werden soll.

⑧ Berechnungsergebnis anzeigen

Das Berechnungsergebnis (i!) Wird zu diesem Zeitpunkt angezeigt. Zählen Sie im Variablenzähler die Anzahl der leeren () Arrays. Als nächstes werden die im Array gespeicherten Zahlen der Reihe nach angezeigt. Durch Anzeige desjenigen mit dem größten Index kann der numerische Wert von i! Ausgegeben werden. Zu diesem Zeitpunkt ist es möglich zu verhindern, dass die unnötige 0 zu Beginn angezeigt wird, indem die Verarbeitung für die Anzahl der zuvor erhaltenen Zähler durchlaufen wird.

Zusammenfassung

Ich habe lange gebraucht, um zum ersten Mal seit langer Zeit ein Programm zu schreiben. Meine persönliche Sucht war, dass ich nicht wusste, dass es unbedingt notwendig war, eine Kopie der Sequenz auf meine eigene Weise zu erstellen. Ich möchte einen Kommentar veröffentlichen, wenn ich in naher Zukunft Lust dazu habe.

Recommended Posts

Ein Programm, das die Leistung von 2 bis 100 berechnet
So schreiben Sie ein benutzerorientiertes Programm (1)
[ruby] Erstellen eines Programms, das nur auf bestimmte Bedingungen reagiert
Ich habe versucht, eine C-Sprachprogrammquelle aus cURL zu generieren
[Einführung in Java] So schreiben Sie ein Java-Programm
Eine Geschichte, die Zeit brauchte, um eine Verbindung herzustellen
Um ein VB.net-Programmierer aus einem Java-Shop zu werden
So erstellen Sie eine Klasse, die Klasseninformationen erbt
[Von Zeit zu Zeit aktualisiert] Links, die verschuldet sind
Ich habe ein Programm erstellt, das aus dem mit Java überladenen Prozess nach der Zielklasse sucht
3. Erstellen Sie eine Datenbank für den Zugriff über das Webmodul
So springen Sie von Eclipse Java zu einer SQL-Datei
Bereitstellen von einem lokalen Docker-Image auf Heroku
[Ruby] Ein Programm / Konzept, das each_with_index und search kombiniert
So starten Sie einen anderen Befehl in einem Ruby-Programm
Verwenden der Datenbank (SQL Server 2014) aus einem Java-Programm 2018/01/04
[Java] So löschen Sie ein bestimmtes Zeichen aus einer Zeichenfolge
Ich habe einen Wrapper erstellt, der KNP von Java aus aufruft
Ruby regulärer Ausdruck Auszug aus einer bestimmten Zeichenfolge in eine Zeichenfolge
Rufen Sie ein in Swift geschriebenes Programm von Processing (Java) auf.
Ein Programm, das Zahlen größer oder kleiner als die Eingabe-Ganzzahl aus einem Array von 50 Elementen ausgibt
Menüprogramm erstellt
Ein Memo des Programms, mit dem Sie feststellen können, dass die Wahrscheinlichkeit eines Würfelwurfs etwa 1/6 beträgt
Von Java zu Ruby !!
Ein Programm, das nach einer Zeichenfolge sucht und die Suchzeichenfolge gefunden hat, zeigt die Zeichenfolge vom Zeilenanfang bis kurz vor der Suchzeichenfolge an.
Generieren Sie eine eindeutige Auflistung von Werten aus einer Auflistung, die doppelte Werte enthält
So erstellen Sie ein Formular zur Auswahl eines Datums aus dem Kalender
[Anfänger] Ich habe ein Programm zum Verkauf von Kuchen in Java erstellt
Speichern von Zeichenfolgen von ArrayList zu Zeichenfolge in Java (Personal)
Erstellen Sie eine Methode, mit der Zeichen von jedem Ort abgerufen werden können
So brennen Sie eine Installationsdiskette von Windows unter Ubuntu
Suchen Sie eine Switch-Anweisung, die in einen Switch-Ausdruck konvertiert werden kann
Ein Programm, das die Anzahl der Wörter in einer Liste zählt
Konvertieren Sie ein potenziell null-Array in einen Stream
Erstellen Sie eine Datenquelle (Verbindungspool), die eine Verbindung von WLS (RAID) zur autonomen Datenbank (ATP / ADW) herstellt.
Remote-Debuggen eines von Raspeye ausgeführten JavaFX-Programms von Windows 10 - Von der Umgebungskonstruktion bis zur Debug-Ausführung ①-
Remote-Debuggen eines von Raspeye ausgeführten JavaFX-Programms von der Windows 10-Von der Umgebungskonstruktion bis zur Debug-Ausführung (2) -
Wie gehe ich mit dem Typ um, den ich 2 Jahre lang über das Schreiben eines Java-Programms nachgedacht habe?