Scanner使用的基本步骤:
1.导包
import java.util.Scanner;
(导包动作必须出现在类的定义上)
2.创建对象
Scanner sc=new Scanner(System.in);
(在这个格式中,只有对象名sc可以改变,其他的不可以改变)
3.接收数据
int i=sc.nextInt();
(变量名i可以改变)
在创建Scanner对象时一直因对象名sc出现问题
提示表明sc一直没有关闭
解决方法:在使用后调用对象名.close();方法就不会再警告⚠了
import java.util.Scanner;
public class ff {
public static void main(String args[]) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个数:");
int number=sc.nextInt();
sc.close();
if(number%2==0)
{
System.out.println(number+"是偶数");
}
else {
System.out.println(number+"是奇数");
}
}
}
Java中的Scanner类涉及到资源的使用,例如读取控制台输入或者读取文件内容时,都需要占用相应的资源。如果在使用完Scanner类之后不关闭它,那么会一直占用这些资源,导致资源浪费,最终可能会导致系统崩溃。
为了避免这种情况的发生,Java中的Scanner类提供了close()方法,可以显式地关闭Scanner对象,释放资源。在代码中,我们应该在使用完Scanner类的使用全部结束之后立即关闭它,以避免占用资源的时间过长。
如何使用close()方法?
在主方法中创建一个Scanner类对象,然后把这个Scanner类对象交给各个方法去调用,把Scanner类对象作为参数传递出去,在主方法中调用close()关闭。
其他所有类中不使用close()方法。
尽量全局使用一个scanner对象,在确定不再使用输入功能的时候只关闭一次scanner。
System.in的理解:
在 Java 中,是Java标准库中的一个静态变量,它表示标准输入流,也就是程序从控制台读取输入的流;用于从控制台读取用户输入的数据。当使用 Scanner 类时,可以通过将 System.in 作为参数传递给 Scanner 的构造函数来将其与输入流连接起来,以便从控制台读取用户输入。
具体来说,System.in 对应的是标准输入流,它是一个字节流,并提供了一些方法来从标准输入中读取数据。当我们使用 Scanner 类时,它会将 System.in 转换为一个字符流,并提供了一些方便的方法来读取各种类型的数据,例如整数、浮点数、字符串等等。这样,我们就可以轻松地从控制台读取用户输入的数据,并进行相应的处理。
创建Scanner对象时,括号里的参数是 System.in。而in是一个final类型,它一旦被初始化就不能改变。所以,无论后面创建多少个Scanner类对象,其实都是返回同一个InputStream流。也就是说,每一次赋给新对象的地址是同一个。
Scanner类的close()方法会关闭其绑定的输入流。一旦关闭 System.in 流时,后面的对象所用的 System.in 流就是关闭状态。需要注意的是,当调用close()方法时,如果流已经被关闭,再次调用close()方法将不会产生任何效果,也不会抛出异常。