首页 > 编程语言 >Java小白入门到实战应用教程-Scanner类及IO流讲解

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

时间:2024-08-09 16:24:24浏览次数:13  
标签:Java Scanner System IO new 类及 out public String

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();
    }
}

标签:Java,Scanner,System,IO,new,类及,out,public,String
From: https://blog.csdn.net/qq_40825301/article/details/141065334

相关文章

  • java读取JSON文件并解析
    importcom.fasterxml.jackson.core.type.TypeReference;importcom.fasterxml.jackson.databind.ObjectMapper;importorg.codehaus.jettison.json.JSONObject;importjava.nio.file.Files;importjava.nio.file.Paths;importjava.util.List;importjava.util.Map;......
  • Nuxt3 axios封装 使用axios接口请求
    一、先安装axiosnpminstalladdaxios封装请求request.ts文件importaxiosfrom'axios'import{ElMessage,Message}from"element-plus"import{getToken}from'./token.js'constservice=axios.create({baseURL:'/api',//......
  • 二、Tauri 使用(http请求 axios)
    1.启用该功能        在tauri.conf.json文件中启用该功能,配置要请求的API路径,多个API的情况使用逗号隔开就可以了{ "tauri":{  "allowlist":{   "http":{    "all":true,    "request":true,    "scope":["http:......
  • com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: can not find lamb
    异常提示:com.baomidou.mybatisplus.core.exceptions.MybatisPlusException:cannotfindlambdacacheforthisentity 使用mockito框架做单元测试:mybatisplus使用Lambda表达式做条件查询、条件更新时会遇到mybatis拿不到缓存问题:错误1:com.baomidou.mybatisplus......
  • JAVA线程资源共享问题
    JAVA多线程共享资源问题场景引入这个场景是一个典型的多线程共享资源的场景,主要目的是测试和观察多个线程对共享变量sum进行并发操作时是否会出现线程安全问题场景描述共享资源:共享变量sum,初始值为0。多个线程同时对sum进行操作,一个线程负责自增操作,另一个线程负责自......
  • Java - IO流
    (IO随用随创建,不用了就关流)1.字节流OutputStream(字节输出流,写出)FileOutputStreanmoff表示起始索引,len表示截取长度Windows换行符:"\r\n"Linux:"\n"Mac:"\r"续写:创建对象第二个参数写true字节打印流(特有方法会原样输出)无缓冲区,自动刷新无用InputStream(字节输......
  • 1.1javaSE初识
    JDK:JDK是JavaDevelopmentKit的缩写,意为Java语言的软件开发工具包(SDK)。它是Java编程的核心工具,为程序开发者提供了一个完整的开发环境。JRE:Java运行环境,是运行Java程序所必须的环境的集合,包含了JVM(Java虚拟机)和Java核心类库。Java开发工具:包括编译器(javac)、解释器(java)、调试......
  • Java SE核心技术——12常用类
    Java中的System类是Java标准库的一部分,它属于java.lang包,因此在使用时不需要显式地导入。这个类提供了一些与系统相关的功能,主要包括以下几个方面:标准输入输出:System.in:标准输入流,通常用于从键盘读取数据。System.out:标准输出流,用于向控制台打印信息。System.err:标准......
  • 多模态学习之论文阅读:《Multi-modal global- and local- feature interaction with at
    《Multi-modalglobal-andlocal-featureinteractionwithattention-basedmechanismfordiagnosisofAlzheimer’sdisease》-2024.9本文提出了一种新的多模态学习框架,用于提高阿尔茨海默病(Alzheimer'sdisease,AD)的诊断准确性。该框架旨在通过结合临床表格数据和大脑......
  • java实现用一个变量表示多个属性的状态
    1、流程启动及状态流转举例(场景:同一份数据在多个流程中流转,确定各流程自己的状态)1.发起流程核心代码/***二进制方式*@paramorgId*@paramnode*@paramcontractIds*/privatevoidstartWithPosition(StringorgId,Stringnode,List<String......