Scanner对象在关闭时,也会自动调用它的输入流进行关闭,也就是scanner.close()的时候,会导致System.in的关闭。所以scanner不能再次获取输入。所以建议是:全局使用一个scanner对象,并且只在整个程序运行结束的时候只关闭一次scanner。
import java.util.Scanner;
public class E{
public static void main(String[] args){
Scanner m=new Scanner(System.in);
int i=m.nextInt();
System.out.println("读取的整数是:"+i);
String obj=m.next();
System.out.println("读取的字符串是:"+obj);
//m.close(); 如果有此行下方代码将出错
Scanner n=new Scanner(System.in);
String k=n.next();
System.out.println("读取的整数是:"+k);
}
}
如果加了m.close()就不会有警告
import java.util.Scanner;
public class E{
public static void main(String[] args){
System.out.println("请输入你的身高(m)");
Scanner m=new Scanner(System.in);
float high=m.nextFloat();
System.out.println("请输入你的体重(kg)");
float weigh=m.nextFloat();
float BMI=weigh/(high*high);
System.out.println("你的BMI为:"+BMI);
m.close();
}
}