简体   繁体   中英

Unable to read input from static block using scanner class

i want to read the data from the user in the static block and need to check some condition there but when i am trying to call nextInt() it causes some error

public class Test {
    static int B,H;
    static{
        Scanner s=new Scanner(System.in);
        B=H=0;
        B=s.nextInt();
        H=s.nextInt();
        s.close();
    }
}

Exception in thread "main" java.lang.ExceptionInInitializerError

Caused by: java.util.NoSuchElementException at java.util.Scanner.throwFor(Scanner.java:862) at java.util.Scanner.next(Scanner.java:1485) at java.util.Scanner.nextInt(Scanner.java:2117) at java.util.Scanner.nextInt(Scanner.java:2076) at Solution.initialise(Solution.java:21) at Solution.(Solution.java:15)

public class App {
    static int B, H;
    static {
        Scanner s = new Scanner(System.in);
        B = H = 0;
        B = s.nextInt();
        H = s.nextInt();
        s.close();
    }

    public static void main(String[] args) {

    }
}

From Java7, it is not possible to compile a program without main method. Before that, we can compile the program without the main method but cannot run the program. Just in case if you are trying any version before Java7, try adding System.exit(0) after s.close() (this will stop the compiler from searching for main methods).

Try Compiling This

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Demo {
    static int B,H;
    static boolean flag=false;
    static {
        Scanner s=new Scanner(System.in);
        B=s.nextInt();
        H=s.nextInt();
        s.close();
        if (B<=0 || H<=0)
            System.out.println("java.lang.Exception: Breadth and height must be positive");
        else
            flag=true;
    }
public static void main(String[] args){
        if (flag) {
            int area = B*H;
            System.out.print(area);
        }
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM