我想在静态块中从用户读取数据,并需要在那里检查某些条件,但是当我尝试调用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();
}
}
线程“ main”中的异常java.lang.ExceptionInInitializerError
由于:java.util.NoSuchElementException 在java.util.Scanner.throwFor(Scanner.java:862) 在java.util.Scanner.next(Scanner.java:1485) 在java.util.Scanner.nextInt(Scanner.java:2117) 在java.util.Scanner.nextInt(Scanner.java:2076) 在Solution.initialise(Solution.java:21) 在解决方案上。(Solution.java:15)
答案 0 :(得分:0)
在Java7中,没有主方法就无法编译程序。在此之前,我们可以在不使用main方法的情况下编译程序,但是无法运行该程序。万一您尝试使用Java7之前的任何版本,请尝试在s.close()之后添加System.exit(0)(这将阻止编译器搜索主要方法)。
答案 1 :(得分: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);
}
}
}
答案 2 :(得分:0)
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) {
}
}