Java小白入门到实战应用教程-Scanner类及IO流讲解

news2024/11/14 13:52:28

Java小白入门到实战应用教程-Scanner类及IO流讲解

Scanner类

我们前面写的很多例子都是程序独自执行的,但是我们做编程写代码的目的是要实现能人和代码去交互的。

现在我们就来了解一个知识点,去实现最简单的人和程序的交互。

在java中通过Scanner类来获取用户在控制台的输入。

我们直接来看应用代码:

public class ScanDemo {

    public static void main(String[] args) {
        //创建Scanner 对象,监控控制台中键盘输入
        Scanner scanner = new Scanner(System.in);
        //获取输入的整型值
        int i = scanner.nextInt();
        System.out.println("用户控制台输入的值:"+i);
    }
}

解释:我们通过上面的一段代码可以在控制台通过键盘输入一个整型的数字,然后打印了一下自己输入的数字。

Scanner类有很多方法,除了上面接收Int型整数的,还有接收字符串的、浮点数的等等。

public class ScanDemo {

    public static void main(String[] args) {
        //创建Scanner 对象,监控控制台中键盘输入
        Scanner scanner = new Scanner(System.in);
        //获取输入的整型值
        int i = scanner.nextInt();
        System.out.println("用户控制台输入的值:"+i);
        //创建Scanner 对象,监控控制台中键盘输入
        scanner = new Scanner(System.in);
        //获取输入的整型值
        String s = scanner.nextLine();
        System.out.println("输入的字符串:"+s);
    }
}

上面给大家介绍了Scanner如何使用,下面我们就可以结合一些我们前面学到的知识点,去实现一个人和程序交互的程序了。

我们来实现一个简单的计算器。

public class ScanDemo {

    public static void main(String[] args) {
        System.out.println("请输入第一个数:");
        Scanner scanner = new Scanner(System.in);
        int one = scanner.nextInt();
        System.out.println("请输入第二个数:");
        scanner = new Scanner(System.in);
        int two = scanner.nextInt();
        System.out.println("请输入加减乘除,分别是 +  -   *  /:");
        scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        int res = 0;
        switch (s){
            case "+":
                res = one + two;
                break;
            case "-":
                res = one - two;
                break;
            case "*":
                res = one * two;
                break;
            case "/":
                res = one / two;
                break;
        }
        System.out.println("最终结果为:"+ res);
    }
}

运行程序:

请输入第一个数:
20
请输入第二个数:
5
请输入加减乘除,分别是 +  -   *  /:
*
最终结果为:100

IO流

IO流是实现两个对象间传递数据的,我们在Java中所说的IO流的简单应用通常是用来读写文件的。

我在网上找了一张IO流结构的图片,来自菜鸟教程
在这里插入图片描述

在Java中IO流主要分为两类,分别时字符流和字节流,按字面意思,字节流就是按照二进制字节的方式读写数据,字符流就是按照字符的方式去读写数据。

下面我们还是直接写一些代码样例,演示IO流中的常用类如何使用。

字节流

public class IoDemo {

    public static void main(String[] args) throws IOException {
        //定义文件路径
        String filePath = "E:\\j-file\\git\\eleven\\text.txt";
        //创建文件输入流
        FileInputStream inputStream = new FileInputStream(filePath);
        //获取流的长度
        int available = inputStream.available();
        //通过循环的方式按字节的方式将文件中的内容读取出来
        for (int i =0 ;i<available;i++){
            System.out.print((char) inputStream.read() + "  ");
        }
        //最终需要关闭流,不关闭的话资源不会释放
        inputStream.close();

    }
}
public class IoDemo {

    public static void main(String[] args) throws IOException {
        //定义文件路径
        String filePath = "E:\\j-file\\git\\eleven\\text.txt";
        //创建文件输出流
        FileOutputStream outputStream = new FileOutputStream(filePath);
        //定义要往文件中写的内容
        String  context = "这是内容";
        //往文件输出,因为我们使用的FileOutputStream是字节输出流,所以我们定义的字符串需要先转成字节数组。
        outputStream.write(context.getBytes(StandardCharsets.UTF_8));
        //关闭流
        outputStream.close();
    }
}

字符流

public class IoDemo {

    public static void main(String[] args) throws IOException {
        //定义文件路径
        String filePath = "E:\\j-file\\git\\eleven\\text.txt";
        //创建字符输出
        Writer out = new FileWriter(filePath);
        String str = "输出的内容";
        //将内容写到文件
        out.write(str);
        //释放资源
        out.close();
    }
}
public class IoDemo {

    public static void main(String[] args) throws IOException {
        //定义文件路径
        String filePath = "E:\\j-file\\git\\eleven\\text.txt";
        //创建字符输入
        Reader reader = new FileReader(filePath);
        int ch = 0;
        char [] buf= new char[1024];
        //通过这种方式一次读取一个字符
        while((ch=reader.read(buf))!=-1){
            System.out.print(new String(buf,0,ch));
        }
        reader.close();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1995474.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL第3讲--数据类型和表的修改和删除

文章目录 前言数据类型数值类型整数类型浮点数和定点数 字符串类型字符类型&#xff1a;文本类型&#xff1a;二进制数据类型 日期和时间类型实例分析 表的操作添加字段修改字段删除字段修改表名删除表 DDL总结DDL数据库操作DDL表操作 前言 上一节在MySQL第2讲–关系型数据库以…

kubernetes 管理平台 Pod管理多容器 与嵌入式脚本

资源清单文件 模板与帮助信息 管理资源对象 多容器 Pod 管理多容器 Pod 自定义任务 容器保护策略 宽限期策略 Pod调度策略

CUDA编程从零到壹

如今&#xff0c;当我们谈论深度学习时&#xff0c;为了提高性能&#xff0c;我们通常会将其实现与使用 GPU 联系起来。 GPU&#xff08;图形处理单元&#xff09;最初设计用于加速图像、2D 和 3D 图形的渲染。然而&#xff0c;由于它们能够执行许多并行操作&#xff0c;它们的…

linux 源码部署polardb-x 错误汇总

前言 在linux 源码部署polardb-x 遇到不少错误&#xff0c;特在此做个汇总。 问题列表 CN 启动报错 Failed to init new TCP 详细错误如下 Caused by: Failed to init new TCP. XClientPool to my_polarx#267b21d8127.0.0.1:33660 now 0 TCP(0 aging), 0 sessions(0 runni…

【汇总】测开高频面试题

加油 &#xff01;&#xff01;&#xff01; &#x1f525; 谈谈对测试的理解 我认为测试是发现并及时解决问题&#xff1a;包括功能、性能、用户体验❤️等方面的验证 … 通过提前定位并修复缺陷&#xff0c;可以减少未来维护成本、保障软件质量、提升用户满意度❤️ … 我了…

大麦/猫眼抢票-狠货

大部分购买方式已迁移至手机端&#xff0c;专注研究移动端 小白操作–仅供学习 注意在帐号按权重的第三方账号设置解绑淘宝&#xff0c;否则有可能在抢票时候出现滑块&#xff0c;影响抢票,抢票优先选择大麦 ⚠️核心内容参考&#xff1a; 据悉&#xff0c;在购票环节&…

23_windows 使用sqlmap、kali使用sqlmap,SQL注入、sqlmap自动注入

sqlmap介绍 安装sqlmap 安装python环境 链接&#xff1a;https://pan.baidu.com/s/16QhhYCppSvuUikhKiOHNgg?pwd9LJY 提取码&#xff1a;9LJY C:\Users\leyilea> python // 测试python能不能用 >>> exit() // 退出 测试sqlmap是否可用 kali中运行sqlmap&#xff…

KAN网络简明教程

在不断发展的机器学习领域&#xff0c;最近一篇题为“KAN&#xff1a;柯尔莫哥洛夫-阿诺德网络”的研究论文在爱好者中引发了一波热潮。这种创新方法挑战了多层感知器 (MLP) 的传统观点&#xff0c;为神经网络架构提供了全新的视角。 NSDT工具推荐&#xff1a; Three.js AI纹理…

Qt 实战(9)窗体 | 9.2、QDialog

文章目录 一、QDialog1、基本概念2、常用特性2.1、模态与非模态2.2、数据交互 3、总结 前言&#xff1a; Qt框架中的QDialog类是一个功能强大且灵活的对话框控件&#xff0c;广泛应用于各种GUI&#xff08;图形用户界面&#xff09;应用程序中&#xff0c;用于处理用户输入、消…

map/multimap容器

一、 map基本概念 简介: map中所有元素都是pair pair中第一个元素为key(键值)&#xff0c;起到索引惟用&#xff0c;第二个元素为value(实值) 所有元素都会根据元素的键值自动排序 本质: map/multimap属于关联式容器&#xff0c;底层结构是用二叉树实现 优点: 可以根据ke…

欧拉系统离线安装界面ukui

1、官网下载安装镜像iso后&#xff0c;默认没有gui openEuler | 开源社区 | openEuler社区官网openEuler是一个开源、免费的 Linux 发行版平台&#xff0c;将通过开放的社区形式与全球的开发者共同构建一个开放、多元和架构包容的软件生态体系。同时&#xff0c;openEuler 也是…

数据结构与算法|算法总结|动态规划篇之子序列、子数组问题

首先我们要明确以下两个问题&#xff1a; 子序列&#xff1a;子序列是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 子数组&#xff1a;子数组是数…

HTTP协议基础知识【后端 4】

HTTP协议基础知识 HTTP&#xff08;Hyper Text Transfer Protocol&#xff0c;超文本传输协议&#xff09;是互联网上应用最为广泛的一种网络协议&#xff0c;它定义了客户端&#xff08;如浏览器&#xff09;与服务器之间数据传输的格式和规则。无论是浏览网页、在线购物还是使…

常见漏洞扫描工具!

AWVS 下载链接&#xff1a; 链接: https://pan.baidu.com/s/1rFq9iMV8oluumyylA22MFg?pwdmyc2 提取码: myc2 打开awvs安装⼯具&#xff0c;一路默认&#xff0c;不要修改文件安装路径&#xff0c;不然会失败&#xff1b; email和password是之后登录服务的账号密码&#xf…

算法日记day 34(动归之使用最小花费爬楼梯|不同路径2|整数拆分|不同的二叉搜索树)

一、使用最小花费爬楼梯 题目&#xff1a; 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返…

工业设备数据采集方案的设计实施与应用-天拓四方

随着工业4.0时代的来临&#xff0c;工业设备数据采集成为了提升生产效率、优化能源管理、实现智能化决策的关键环节。本文将围绕工业设备数据采集的重要性、方案设计实施以及TDE工业网关的应用实践展开探讨&#xff0c;以期为相关企业提供一种清晰、专业且实操性强的数据采集方…

Navicat Premium使用

文章目录 Navicat Premium 16的使用连接MySQL建立数据库并构建表导入数据 Navicat Premium 16是一款功能强大的数据库管理工具&#xff0c;它允许用户从单一应用程序中同时连接多种数据库&#xff0c;提供了极其便捷和高效的管理和开发环境&#xff0c;对于 MySQL 用户来说&…

leetcode198_打家劫舍

思路 动态规划 func rob(nums []int) int {if len(nums) < 2 {return nums[0]}// dp[i] 表示到第i家为止&#xff0c;小偷能够偷窃到的最高金额dp : make([]int, len(nums))dp[0] nums[0]dp[1] max(nums[0], nums[1])for i:2; i<len(nums); i {if nums[i] dp[i-2] &…

制造业BOM管理难点分析 三品PDM系统BOM管理解决方案详情

在当今竞争激烈的市场中&#xff0c;制造企业面临着产品多样化、个性化需求和快速交付的压力。BOM物料清单作为产品数据管理的核心&#xff0c;其准确性和效率直接影响到企业的竞争力。然而&#xff0c;BOM管理在制造企业中往往面临诸多挑战。但是PDM系统的出现让BOM管理变得不…

VisionPro二次开发学习笔记1-创建基于QuickBuild的C#应用程序

创建基于QuickBuild的C#应用程序 使用的QuickBuild应用程序位于&#xff05;VPRO_ROOT&#xff05;/ Samples / Programming / QuickBuild / advancedAppOne.vpp中。在继续之前&#xff0c;可以在QuickBuild中运行该应用程序。 QuickBuild应用程序使用PatMax查找支架的“耳朵…