how2j.cn


工具版本兼容问题
截至目前为止,学习了使用System.out.println("") 向控制台输出数据。

在接下来的练习中,需要用到从控制台输入数据,所以需要用到Scanner类

本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



6分8秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)



步骤 1 : 使用Scanner读取整数   
步骤 2 : 使用Scanner读取浮点数   
步骤 3 : 使用Scanner读取字符串   
步骤 4 : 读取了整数后,接着读取字符串   

步骤 1 :

使用Scanner读取整数

注意: 使用Scanner类,需要在最前面加上

import java.util.Scanner;

表示导入这个类,才能够正常使用
使用Scanner读取整数
import java.util.Scanner; public class HelloWorld { public static void main(String[] args) { Scanner s = new Scanner(System.in); int a = s.nextInt(); System.out.println("第一个整数:"+a); int b = s.nextInt(); System.out.println("第二个整数:"+b); } }
import java.util.Scanner;

public class HelloWorld {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int a = s.nextInt();
		System.out.println("第一个整数:"+a);
		int b = s.nextInt();
		System.out.println("第二个整数:"+b);
	}
}
步骤 2 :

使用Scanner读取浮点数

使用Scanner读取浮点数
import java.util.Scanner; public class HelloWorld { public static void main(String[] args) { Scanner s = new Scanner(System.in); float a = s.nextFloat(); System.out.println("读取的浮点数的值是:"+a); } }
import java.util.Scanner;
 
public class HelloWorld {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        float a = s.nextFloat();
        System.out.println("读取的浮点数的值是:"+a);

    }
}
步骤 3 :

使用Scanner读取字符串

使用Scanner读取字符串
import java.util.Scanner; public class HelloWorld { public static void main(String[] args) { Scanner s = new Scanner(System.in); String a = s.nextLine(); System.out.println("读取的字符串是:"+a); } }
import java.util.Scanner;
 
public class HelloWorld {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        String a = s.nextLine();
        System.out.println("读取的字符串是:"+a);
    }
}
步骤 4 :

读取了整数后,接着读取字符串

需要注意的是,如果在通过nextInt()读取了整数后,再接着读取字符串,读出来的是回车换行:"\r\n",因为nextInt仅仅读取数字信息,而不会读取回车换行"\r\n".

所以,如果在业务上需要读取了整数后,接着读取字符串,那么就应该连续执行两次nextLine(),第一次是取走回车换行,第二次才是读取真正的字符串
读取了整数后,接着读取字符串
import java.util.Scanner; public class HelloWorld { public static void main(String[] args) { Scanner s = new Scanner(System.in); int i = s.nextInt(); System.out.println("读取的整数是"+ i); String rn = s.nextLine(); String a = s.nextLine(); System.out.println("读取的字符串是:"+a); } }
import java.util.Scanner;
  
public class HelloWorld {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int i = s.nextInt();
        System.out.println("读取的整数是"+ i);
        String rn = s.nextLine();
        String a = s.nextLine();
        System.out.println("读取的字符串是:"+a);
    }
}


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2018-10-02 BMI交作业
irises



交BMI作业。
import java.util.Scanner;
public class BMI {
	
	private static float result;
	private void caculate(float height,float weight){
		result=weight/(height*height);
	}
	
	public static void main(String[] args){
		BMI a=new BMI();
		System.out.println("请输入身高和体重(cm/kg)");
		Scanner i=new Scanner(System.in);
		Scanner j=new Scanner(System.in);
		float k=i.nextFloat();
		float l=j.nextFloat();
		a.caculate(k,l);
		System.out.println(result);
		i.close();
		j.close();

	
	}
}

							






答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2018-08-05 命名不能关闭?
joythy



提示感叹号,Resource leak:"s" is never closed.
import java.util.Scanner;
 
public class HelloWorld {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        float a = s.nextFloat();
        System.out.println("读取的浮点数的值是:"+a);

    }
}
Resource leak :"s" is never closed.


4 个答案

逸风 答案时间:2018-10-25
Scanner对象创建会获得并持有一个inputStream,而你没有关闭它。 这种是警告。 你可以在最后加一句,s.close(); 为什么加个s.close?????

ZOUJINLUN0000 答案时间:2018-09-19
作业

Sparrow 答案时间:2018-08-24
alan_98 答案时间:2018-08-05
Scanner对象创建会获得并持有一个inputStream,而你没有关闭它。 这种是警告。 你可以在最后加一句,s.close();




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2018-08-04 请问我为什么取不出值呢
2018-07-23 连续输入两个数字(中间空格)后输出为什么是这样的?
2018-07-12 jse basic hello world
2018-06-11 这个是什么意思
2018-05-14 为什么next可以直接读取呀 next跟nextline有什么区别呀
2018-05-09 控制台没输出,啥都没
2018-04-25 提示的的“resocuce leak 's': is never closed”
2018-04-10 Scanner使用出错,报The constructor consoleinput(InputStream) is undefined?
2018-03-26 eclipse版本更新后需要连续三个nextLine才可以实现换行读取字符串
2018-03-26 为什么这么代码输入float数字后面紧接输入字符串才能现实字符串
2018-03-07 关于\n会录入的个人理解
2018-02-06 请问这行代码中的System.in是什么含义?
2017-12-25 我要输入一个不确定的数据类型,然后进行判断,怎么弄呢?
2017-11-18 申明的Scanner 用不了怎么办?
2017-11-18 老师为什么他不执行啊,也没报错啊?
2017-11-14 老师 请问一下 一开始不是取数字吗 我知道next line会读取回车换行 但是回车换行哪来的呢?
2017-11-10 只使用一次s.nextLine(),第一次输入数据后,在数字和字符直接用空格作为分界,仍然能够分别读出数字和字符。请问空格是否是scanner读取数据结束的标志?
2017-11-03 总共需要几个nextLine呢?
2017-10-22 现在理解为什么需要连续输入两次且rn要在a的前面了
2017-10-16 函数问题
2017-10-09 老师,我还是有点理解不了~
2017-09-15 正常输入的字符串 末尾的回车换行读没读进去
2017-09-09 使用Scanner读取整数,失败
2017-09-09 使用Scanner读取整数,失败
2017-08-26 我只录了一次nextLine(),为什么也能显示
2017-08-07 资源泄漏:从来没有关闭?
2017-06-18 只能读两次吗?
2017-02-24 请问可以使用Scanner读取char类型的数据吗?




提问之前请登陆
关于 JAVA 基础-操作符-Scanner 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 902680467
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: http://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图