Java 无法使用scanner类从静态块读取输入
我想从静态块中的用户那里读取数据,需要检查其中的一些条件,但是当我试图调用nextInt()时,它会导致一些错误Java 无法使用scanner类从静态块读取输入,java,exception,static,java.util.scanner,static-initializer,Java,Exception,Static,Java.util.scanner,Static Initializer,我想从静态块中的用户那里读取数据,需要检查其中的一些条件,但是当我试图调用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”ja
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.ExceptionInInitializeError中出现异常
原因:java.util.NoSuchElementException
位于java.util.Scanner.throwFor(Scanner.java:862)
下一步(Scanner.java:1485)
位于java.util.Scanner.nextInt(Scanner.java:2117)
位于java.util.Scanner.nextInt(Scanner.java:2076)
初始化(Solution.java:21)
at解决方案。(Solution.java:15)
在Java7中,没有main方法是不可能编译程序的。在此之前,我们可以在没有main方法的情况下编译程序,但不能运行程序。以防万一,如果您正在尝试Java7之前的任何版本,请尝试在s.close()之后添加System.exit(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);
}
}
}
import java.io.*;
导入java.util.*;
导入java.text.*;
导入java.math.*;
导入java.util.regex.*;
公开课演示{
静态int B,H;
静态布尔标志=false;
静止的{
扫描仪s=新的扫描仪(System.in);
B=s.nextInt();
H=s.nextInt();
s、 close();
如果(b不要关闭扫描仪
读取系统。在
中,我也无法使用给定的代码进行复制。请提供一个?您的jdk版本是什么?主要方法是jdk强制要求的8@Deadpool您可以编译该类并将其加载到应用程序中,以便调用静态init块,对吗?尽管此代码可能如果不能解决问题,一个好的答案应该解释代码的作用以及它是如何帮助的
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) {
}
}