LoginSignup
2
2

More than 3 years have passed since last update.

AtCoderで早速標準入力の方法でつまずいた。

Last updated at Posted at 2020-01-25

はじめに

今までエンジニアとして働いてきたのですが、主に上流工程ばかりで、実装が殆どできずやばいと思って、競技プリグラミングやり始めました。なんとか一問解きましたが、そこでつまずいたことを備忘録として載せます。

今回はデータ入力のScannerについて書きます。

挑戦した問題

Atcodeの過去の得点100の問題…つまり簡単な問題です。

提出1回目

色々なサイトを見ながら四苦八苦しつつもなんとかコーディングし、vscodeのターミナルから実行して想定通りの結果を得ることができました。以下がコード内容(おそらく有識者からみたら、汚いコードですがご容赦を。。)

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

結果

実行時エラー…中身を確認すらしてもらえず…\(^o^)/

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

何がだめだったのか

入力方法が単純にだめだったみたいですね。

ターミナルでJava Main X X Xと入力するとスペース区切りで配列argsに格納されるので、大丈夫と思っていましたが完全に見誤っていました。

どうすればよかったのか

入力内容を取得するときにScannerを使うとよいとのこと。next();の部分で入力を取得、もう一度使用すると次の入力値が取得できます。

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

提出5回目

コードを何度もリファクタリング(用語使いたがりのにわかですみません。。)してなんとかクリアしました笑

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

参考サイト

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

何かご指摘等ありましたら、ご遠慮無くおっしゃってくださいーm(_ _)m

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2