[JAVA] Ich bin sofort auf die Standardeingabemethode mit AtCoder gestoßen.

Einführung

Ich habe bis jetzt als Ingenieur gearbeitet, aber ich habe angefangen, Wettbewerbsvorprogrammierungen durchzuführen, weil ich dachte, dass es schwierig zu implementieren ist, weil es hauptsächlich im Upstream-Prozess war. Ich habe es geschafft, eine Frage zu lösen, aber ich werde ein Memorandum darüber veröffentlichen, worüber ich gestolpert bin.

Dieses Mal werde ich über die Dateneingabe "Scanner" schreiben.

Herausgefordertes Problem

Atcodes vergangene Punktzahl von 100 Problem ... Mit anderen Worten, es ist ein einfaches Problem.

https://atcoder.jp/contests/abc042/tasks/abc042_a

Erste Einreichung

Ich habe es geschafft, beim Betrachten verschiedener Sites zu codieren, und habe es vom vscode-Terminal aus ausgeführt, um die erwarteten Ergebnisse zu erhalten. Das Folgende ist der Code-Inhalt (wahrscheinlich ein schmutziger Code aus Sicht eines Experten, aber bitte verzeihen Sie mir ...)

public class Main {
    public static void main(String args[]) {
        String answer = "YES";
        String[] haiku = args;
        int sum = 0;
        for(int i = 0; i < 3; i++){
          if(haiku[i].equals("7") || haiku[i].equals("5")){
              sum = sum + Integer.valueOf(haiku[i]);
              System.out.println(sum);
          }
          else{
              answer = "NO";
          }
          System.out.println(haiku[i]);
        } 
        if(sum != 17){
            answer = "NO";
        }
        System.out.println(answer);
    }
}

Ergebnis

Laufzeitfehler ... Ich konnte nicht einmal den Inhalt überprüfen ... \ (^ o ^) /

スクリーンショット 2020-01-25 19.45.10.png

Was schief gelaufen ist

Es scheint, dass die Eingabemethode einfach nutzlos war.

Als ich im Terminal "Java Main X X X" eingab, wurde es in den durch Leerzeichen getrennten Arrays "args" gespeichert, sodass ich dachte, es sei in Ordnung, aber ich habe es völlig falsch verstanden.

Was soll ich machen

Es wird empfohlen, "Scanner" zu verwenden, um den Eingabeinhalt abzurufen. Holen Sie sich die Eingabe im next (); - Teil und verwenden Sie sie erneut, um den nächsten Eingabewert zu erhalten.

Scanner sc = new Scanner(System.in);
int i = Integer.parseInt(sc.next());

5. Einreichung

Ich habe den Code viele Male überarbeitet (es tut mir leid, dass ich den Begriff verwenden möchte ...) und es geschafft, ihn zu löschen, lol

import java.util.Scanner;
public class Main {
    public static void main(String args[]) {
        String answer = "YES";
        Scanner s = new Scanner(System.in);
        int sum = 0;
        for(int i = 0; i < 3; i++){
            int haiku = Integer.parseInt(s.next());
          if(haiku == 7 || haiku == 5 ){
              sum = sum + haiku;
          }
          else{
              answer = "NO";
          }
        } 
        if(sum != 17){
            answer = "NO";
        }
        System.out.println(answer);
    }
}

Referenzseite

https://qiita.com/p_shiki37/items/a0f6aac33bf60f5f65e4 https://uxmilk.jp/48686

Wenn Sie Vorschläge haben, zögern Sie bitte nicht, mir-m (_ _) m zu sagen

Recommended Posts

Ich bin sofort auf die Standardeingabemethode mit AtCoder gestoßen.
Geben Sie ein Suffix für die Methode an
Geben Sie ein Suffix für Methode 2 heraus
[Java] Ich möchte Standardeingabe und Standardausgabe mit JUnit testen
So zeigen Sie 0 auf der linken Seite des Standardeingabewerts an
Ruby mit AtCoder lernen 11 So erhalten Sie häufig verwendete Standardeingaben
Simulieren Sie die Simplex-Methode mit der GUI
Programmieren mit Ruby (unterwegs)
Ich habe versucht, die Methode zu erklären
Aufgenommen, weil ich süchtig nach der Standardeingabe der Scannerklasse war
Meine Gedanken zur Equals-Methode (Java)
Ich wollte der Methode @VisibleForTesting hinzufügen
Ich war süchtig nach der Rollmethode
[JDBC ③] Ich habe versucht, mithilfe von Platzhaltern und Argumenten Eingaben über die Hauptmethode vorzunehmen.
Ich bin auf die Java-Version in Android Studio gestoßen, daher werde ich sie zusammenfassen