【无标题】Scanner使用的步骤及对象名sc报错的解决方法

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()方法将不会产生任何效果,也不会抛出异常。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值