4

我想从静态块中的用户那里读取数据并需要检查那里的一些情况但是当我试图调用 nextInt() 时会导致一些错误

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

线程“主”java.lang.ExceptionInInitializerError 中的异常

原因:java.util.Scanner.throwFor(Scanner.java:862) 处的 java.util.NoSuchElementException 在 java.util.Scanner.nextInt(Scanner.java) 处的 java.util.Scanner.next(Scanner.java:1485) :2117) 在 java.util.Scanner.nextInt(Scanner.java:2076) 在 Solution.initialise(Solution.java:21) 在 Solution.(Solution.java:15)

4

3 回答 3

1
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) {

    }
}
于 2020-07-01T08:41:57.723 回答
0

从 Java7 开始,无法编译没有 main 方法的程序。在此之前,我们可以在没有 main 方法的情况下编译程序,但无法运行程序。以防万一您尝试 Java7 之前的任何版本,请尝试在 s.close() 之后添加 System.exit(0) (这将阻止编译器搜索主要方法)。

于 2018-12-26T10:01:33.690 回答
0

尝试编译这个

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);
        }
    }
}
于 2020-07-01T04:57:25.160 回答