当前位置: 首页 > news >正文

1.用户交互

Scanner对象

  • 之前我们学的基本语法中并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner是Java5的新特征,我们可以通过Sanner类来获取用户的输入。

    java.util是Java工具类库的包名

  • 基本语法:

    Scanner s = new Scanner(System.in)
    
  • 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。

package com.yuxi.Scanner;import java.util.Scanner;public class Demo01 {public static void main(String[] args) {//创建一个扫描器的对象,用于接受键盘数据Scanner scanner = new Scanner(System.in);System.out.println("使用next方式接收:");//判断用户有没有输入字符串if(scanner.hasNext()==true){String str = scanner.next();//接收用户的输入System.out.println("输入的内容为:"+str);}scanner.close();//凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉}
}

image-20260312064226528

这里输入为hello world;但是代码运行输出为hello

先写主结构程序main方法(public static void main(String[] args){})必须得要,就可以在main方法中写代码了
创建一个扫描器的对象,也就使我们刚刚看到的那个Scanner对象,用它来接受键盘的数据,首先要写一个new,就是我们创造一个这样的对象,new就是新生的意思,new一个Scanner,输入new Scanner 就会出现Scanner的工具包,也就是Java.util,点击Java.util,就会导入这个工具包,然后它需要一个参数,(加参数就是直接小括号,然后小括号里面加参数)就是System.in,然后加分号结束语句,再自动补全语句,Alt+Enter自动补全语句快捷键,选择引入局部变量

​ 我们之前用的System.out是输出,System.in就是输入,new Scanner(System.in);这个地方创建了一个对象,通过System.in接收用户的输入,并且把它封装成Scanner对象,我们之后就用scanner来接收用户的扫描测试,

​ System.out.println("使用next方式接收:");

System.out不是一个类,也不是一个方法,它是一个对象:

  • System是Java里自带的一个类
  • out是System类里的一个静态成员变量,它的类型是PrinStream(打印输出流)
  • 所以System.out本质是一个已经准备好的、可以直接用来向控制台输出内容的对象

println是一个方法,println(),方法,用来输出并换行

if(scanner.hasNext()true){}/这句可以不用true,在if里默认后面有这个

if是判断

scanner=new Scanner(System.in);//就是这个对象输入的对象

has:有;next:下一行

hasNext:有下一行(用户有输入,就是ture;没有输入就是false)

String str = scanner.next();

next():next方法,读取下一段文字

close():关闭方法

*1.这个参数是什么?

System.in代表标准输入流,简单说就是:

  • 它指向你电脑的键盘输入
  • 告诉Scanner:你要从哪里读取数据?就从键盘那里度

2.为什么必须传这个参数?

​ Scanner是一个通用的扫描工具,它不止能读键盘,还能读文件,读字符串。所以它必须知道数据源在哪里,不然就不知道该从哪拿数据:

  • 读键盘-->new Scanner (System.in)
  • 读文件-->new Scanner(newFile("test.txt"))
  • 读字符串-->new Scanner("Hello Java")

如果不传参数,Scanner就会一脸懵:‘我到底要读哪里’所以Java语法规定,创建Scanner时必须指定数据源

IO流

IO流是Input/Output(输入/输出)流的简称,是Java中用来传输数据的核心机制。

  • I(Input):输入-->数据从外部(键盘、文件、网络)流向程序

  • O(Output):输出-->数据从程序流向外部(控制台、文件、网络)

    你可以把它想象成“数据水管”:

    • 水管的一端连接程序,另一端连接外部设备(键盘、文件等)
    • 数据就像水一样,通过“水管”在程序和外部之间流动

为什么IO流用完要关闭

  • IO流会占用系统的文件句柄,内存等资源
  • 如果不手动调用close()关闭,这些资源会一直被程序占用,不会自动释放
  • 长期运行的程序中,大量未关闭的IO流会导致资源泄露,最终可能让程序崩溃或性能急剧下降
  • 这就是Java编程中“谁打开,谁关闭”的规范
package com.yuxi.Scanner;import java.util.Scanner;public class Demo02 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);//创建一个新的对象,用于接收键盘数据System.out.println("使用next接收:");if(scanner.hasNextLine()){//判断用户是否还有输入String str = scanner.nextLine();System.out.println("输出内容为:"+str);}scanner.close();}
}

image-20260312065144315

next()和nextLine的区别

next()

  1. 一定要读取到有效字符后才可以结束输入。
  2. 对输入有效之前的空白,next()方法会自动将其去掉
  3. 只有输入有效字符后才将其后面输入的空白作为分隔符或结束符
  4. next()不能得到带有空格的字符串

nextLine()

  1. 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
  2. 可以获得空白

不用if语句判断也可以

package com.yuxi.Scanner;import java.util.Scanner;public class Demo02 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("使用nextjieshou");String str = scanner.nextLine();System.out.println("输出内容为:"+str);scanner.close();}}

image-20260312072025404

http://www.jsqmd.com/news/465638/

相关文章:

  • 3月九日Web课堂笔记
  • 043校园二手交易平台系统-springboot+vue
  • C++从入门到入土 (5):.C/C++内存管理
  • 3月9日笔记
  • 3.9笔记
  • 别吹OpenClaw了,先问问它能不能替你挨骂
  • 数组地址与数组首元素地址
  • 【无人机三维路径规划】基于引力搜索算法实现城市环境下无人机避障三维航迹规划附Matlab实现
  • 高中辍学,没学历、没经验!OpenAI 研究科学家:我靠 ChatGPT 自学成才 O-1 杰出人才签证Gabriel Peterson
  • 深入解析 Pandas 聚合 API:超越 `groupby().agg()` 的高级技巧与性能优化
  • 【参数辨识】基于分数阶占据核逼近非线性动力学系统的状态导数matlab代码
  • 【滤波跟踪】基于扩展卡尔曼滤波EKF,融合距离和方位角观测,实现移动机器人位姿估计附matlab代码
  • 2026年评价高的食品行业自动化生产线品牌推荐:苏州仓储行业自动化生产线/苏州纺织行业自动化生产线厂家综合实力参考(2026) - 行业平台推荐
  • 找防爆空调品牌厂家必看!2026年国内靠谱特种空调品牌厂家对比,高性价比防爆空调品牌厂家推荐:浩特普尔领衔 - 栗子测评
  • 2026年比较好的外贸公司代理记账品牌推荐:出口退税代理记账品牌推荐企业 - 行业平台推荐
  • 2026年食堂专用饺子肉馅品牌推荐:混合肉馅/饺子专用肉馅厂家选择参考建议 - 品牌宣传支持者
  • 基于多种方法的干扰源聚类分析附Matlab代码
  • 【DPFSP问题】基于自适应双种群协同鸡群算法ADPCCSO求解分布式置换流水车间调度DPFSP附Matlab代码
  • 2026年口碑好的鱼肉胶厂家推荐:佛山猪肉胶用户好评厂家推荐 - 品牌宣传支持者
  • 【图像去雾】基于双传输映射策略与梯度域引导图像滤波的单图像去雾附Malab复现含文献
  • 2026年评价高的滑雪场管道厂家推荐:滑雪场制冷设备厂家实力参考 - 行业平台推荐
  • 2026年知名的厂房屋面防水品牌推荐:浙江屋面防水优质厂家推荐汇总 - 品牌宣传支持者
  • 【图像融合】基于新型金字塔滤波器的非对称自适应多尺度分解方法红外和可见光图像融合附Matlab实现
  • Python基于flask的京东食品销售数据分析系统 爬虫可视化
  • 2026年靠谱的地基钢模板厂家推荐:合金钢模板/定制钢模板/山东耐腐蚀钢模板品牌厂商推荐(更新) - 品牌宣传支持者
  • Python基于flask的卷烟营销统计分析系统
  • 2026年靠谱的葡萄专用有机肥厂家推荐:生物专用有机肥/湖北中药材专用有机肥厂家推荐与选择指南 - 品牌宣传支持者
  • Python基于flask的居民用电电力数据分析系统开发
  • Python基于flask的旧时光咖啡厅奶茶店管理系统
  • Python基于flask的课程在线学习考试平台小程序 三端