Hacker Rank" java Static initializer block"で学んだこと

static initialization block(初期化ブロック)

throw

try-catch

以上3つだ。この問題にこれら全てが必要だというわけではない。解いている途中で新たに知ったことだ。static initialization block(初期化ブロック)のみはこの問題の回答に必要な知識であることを先に述べておこう。ちなみに、わたしは、この初期化ブロックとif文でこの問題を解いた。

static initialization block(初期化ブロック)

つぎの2つがある

object initialization block (オブジェクト初期化ブロック)
オブジェクト毎に実行されます。

static initialization block (静的初期化ブロック)
クラスのロード時に一度だけ実行されます。このブロックはオブジェクトが作成される前に実行されるので、static 変数のみにアクセスできます。

object initialization block 

(オブジェクト初期化ブロック)

入力した数字がマイナスになると"must be positive"を返す。反対に1と2を入力すると"b x h=2"が返されるサンプルコード

class Block1{
    public static void main(String[] args){
            Caculate caculate = new Caculate();
            caculate.result();
    }
}
class Caculate{
    
    static Scanner scan = new Scanner(System.in);
    static int x = scan,nextInt();
    static int y = scan,nextInt();
    static boolean flag = true;
    
    
    //ここから先(オブジェクト初期化ブロック)
    {
    if (b > 0 && h > 0) 
        flag = true;
        
    else 
        flag = false;
     }
    
    public static void result() {
       
       if (flag == false) System.out.println("Must be positive");
       else System.out.printf("result=%d", b*h);
   }
    
}

この記事が気に入ったらサポートをしてみませんか?