how2j.cn


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

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


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



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



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

步骤 1 :

使用Scanner读取整数

edit
注意: 使用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读取浮点数

edit
使用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读取字符串

edit
使用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 :

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

edit
需要注意的是,如果在通过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公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2022-10-19 输入异常
wangbiui




String c = input.nextLine(); 这步代码没有等我去输入,直接运行下一步了。
加载中
package study;

import java.util.Scanner;
public class Demo1_in_out {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);

        System.out.println("请输入一个整数");
        int a = input.nextInt();
        System.out.println("输入的整数是"+a);

        System.out.println("请输入一个浮点数");
        float b = input.nextFloat();
        System.out.println("输入的浮点数是:"+b);

        System.out.println("请输入一个字符串:");
        String c = input.nextLine();
        System.out.println("输入的字符串是"+c);
    }

}

							


3 个答案

ikun12321
答案时间:2023-12-27
当你使用nextInt()方法读取一个整数时,它只会读取数字部分,而不会读取后面的回车换行。 这样,回车换行就会留在输入流中,等待下一次读取。 如果你接着使用nextLine()方法读取字符串,它会读取输入流中的所有内容,直到遇到下一个回车换行。 但是,因为输入流中已经有一个回车换行了,所以nextLine()方法会立即返回,而不会等待你输入字符串。 这样,你就会得到一个空的字符串,也就是回车换行。 为了避免这个问题,你可以在nextInt()方法后面加上一个nextLine()方法,来消耗掉输入流中的回车换行。 这样,下一次使用nextLine()方法时,就可以正常地读取字符串了。

Liccc
答案时间:2023-11-14
水杯
答案时间:2022-10-23
你上一个input.nextFloat()回车被nextLine接收到了。解决办法就是在上个输入后面写一个nextLine,接收回车信号。



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2022-10-16 问一些scanner两次输入,为什么第二次输入不显示,直接输出?
lishijing123456




问一些scanner两次输入,为什么第二次输入不显示,直接输出? 输入16.4,直接输出了
package basics.abstract0.YuJu;

import java.util.Scanner;
public class TextIf2 {
    public static void main(String[] args) {
       Scanner s = new Scanner(System.in);
       float w = s.nextFloat();//体重
        System.out.println("体重:" +w+"kg");
        float h = s.nextFloat();//身高
        System.out.println("身高:" +h+"m");
        float BMI= w/(h*h);
        if(BMI<18.5){
            System.out.println("体重过轻" +BMI);
        }
        else if(BMI>=18.5&&BMI<24) {
            System.out.println("当前的BIM值是:" + BMI);
            System.out.println("身体状态是:正常范围" );
        }
            else if(BMI>=24&&BMI<27){
                System.out.println("体重过重"+BMI);
        }
            else if(BMI>=27&&BMI<30){
            System.out.println("轻度肥胖"+BMI);
        }
        else if(BMI>=30&&BMI<35){
            System.out.println("中度肥胖"+BMI);
        }
        else if(BMI>=35){
            System.out.println("重度肥胖"+BMI);
        }
    }

}

							


2 个答案

加长版海贼
答案时间:2023-08-08
比较next和nextLine区别,next不读取换行

Wanjia123
答案时间:2022-10-21
16.4 体重:16.4kg 25 身高:25.0m 体重过轻0.026239999 然而并没有



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2022-05-22 多次接连读取整型和字符串时,如何解决?
2021-12-04 import java.util.Scanner; 为啥我的Scanner会找不到呢??
2021-02-21 读完int接着读string,应该读到\r\n,但用length()函数发现该string为空?


提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 35 条以前的提问,请 点击查看

提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 JAVA 基础-操作符-Scanner 的提问

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

上传截图