[paiza]スキルチェック見本問題 Java 数値演算結果で分岐/ 0 が含まれていないか判定 return sc.closeとは


初めに

今回もpaizaの見本問題(ランクD)に2問挑戦しました。
新たに、「return」 「sc.close」について学べましたので、
まとめていきます。(記事の後半)

数値演算結果で分岐 (paizaランク D 相当)

整数 A, B, C が与えられます。
式 A × B ≦ C が成立している場合はYESを、
そうではない場合はNOを出力してください。

解答コード

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        if(a*b<=c){
            System.out.println("YES");
        }else{
            System.out.println("NO");
        }
    }
}

0 が含まれていないか判定

長さ N の数列Aが与えられます。
Aの中に 0 が含まれていない場合はYESを、 
0 が含まれている場合はNOを出力してください。

正解のコード

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int[] a = new int[n];
        for (int i = 0; i < n; i++) {
//配列に格納します
            a[i] = sc.nextInt();
        }
//拡張for文を使用し配列の中身を取り出します。
//0を見つけたら、sc.closeでスキャナーを閉じます。=0見つけたら終わる
//returnで呼び出し元に処理を戻す
        for (int x : a) {
            if (x == 0) {
                System.out.println("NO");
                sc.close();
                return;
            }
        }
        System.out.println("YES");
        sc.close();
    }
}

この場合、出力結果は以下のようになります。
NO

sc.closeとreturnがなかったらどうなる?

出力結果は以下のようになります。
NO
YES

returnとは?

メソッドから呼び出し元に値を返します。さらに、return文が実行されると、
それ以降の処理は行いません。

sc.closeとは?

スキャナを閉じてくれます。

参考記事

終わりに

拡張for文が苦手です。