Java的输入输出

news2024/9/20 3:26:00

秋招笔试很多都是要自己写输出输出的,所以对常见的整理一下,后续也会持续更新的~~~

目录

1.java中的Scanner类

1.1next()方法和nextLine()方法的区别

1. next() 方法

示例

2. nextLine() 方法

示例

主要区别

使用场景

2.print类

3.常用的转换函数类 

3.1.String.valueOf

3.2 Integer.parseInt

3.3. toCharArray 

3.4.substring

参数说明

3.5.split方法

参数说明

返回值

3.6.trim方法

3.7.字符串中常用的函数

4.常见输入

4.1.输入是整数序列

4.2.输入整数数组

4.3.输入是字符串数组形式

整体代码如下:

4.4. 输入是字符形式

1.java中的Scanner类

  • hasNext()方法:用于判断方法是否还有输入

  • next()方法:用于读取下一个输入

  • nextLine():用于读取一行输入

  • hasNextInt() 和 nextInt() 读取一个整数

  • hasNextDouble()和nextDouble():读取一个浮点数

1.1next()方法和nextLine()方法的区别

next()方法遇到空格就停止了,而nextLine方法会读取一整行

1. next() 方法

  • 用途next() 方法用于读取输入中的下一个完整的“token”(标记)。一个token通常是由非空白字符组成的序列。
  • 行为:它读取输入直到遇到空白字符(如空格、制表符或换行符),然后停止读取。它不会读取这些空白字符。
  • 返回值:返回的是一个字符串,代表读取的token。
  • 特点:如果输入中的第一个字符是空白字符,next() 将只读取到第一个非空白字符为止。

示例

Scanner scanner = new Scanner(System.in);
System.out.print("Enter a word: ");
String word = scanner.next();
System.out.println("You entered: " + word);

如果用户输入 Hello Worldnext() 将只读取 Hello 并将其返回,而 World 将留在输入缓冲区中。

2. nextLine() 方法

  • 用途nextLine() 方法用于读取输入中的一整行,包括空格。
  • 行为:它从当前位置开始读取,直到遇到换行符(\n),然后停止读取。它会返回包括换行符在内的所有字符,或者直到输入结束。
  • 返回值:返回的是一个字符串,代表读取的整行。
  • 特点nextLine() 会读取并返回当前行的剩余部分,包括任何空白字符。

示例

Scanner scanner = new Scanner(System.in);
System.out.print("Enter a line: ");
String line = scanner.nextLine();
System.out.println("You entered: \"" + line + "\"");

如果用户输入 Hello World 然后按回车,nextLine() 将读取 Hello World 包括后面的换行符,并将其全部返回。

主要区别

  1. 读取内容next() 只读取到下一个空白字符为止,而 nextLine() 读取整行,包括所有空格。
  2. 空白处理next() 忽略空白字符,而 nextLine() 包括空白字符。
  3. 换行符nextLine() 包括换行符在返回的字符串中,而 next() 不包括。

使用场景

  • 使用 next() 当你需要读取单个单词或标记,并且希望自动忽略任何后续的空白。
  • 使用 nextLine() 当你需要读取完整的行,包括所有的空格和制表符。

2.print类

  1. System.out.print()

    • 用于打印信息到控制台,但不会自动换行。如果需要在打印后换行,可以手动添加 \n。 
  2. System.out.println()

    • 用于打印信息到控制台,并在打印结束后自动换行。
  3. System.out.printf()

    用于格式化输出信息到控制台。它允许你控制输出的格式,类似于C语言中的 printf 
// 格式化输出一个带有小数点的数字
        double temperature = 36.5789;
        System.out.printf("当前体温是: %.2f 度\n", temperature);

3.常用的转换函数类 

Java版本:

3.1.String.valueOf

String.valueOf 是一个静态方法,用于将各种数据类型转换为它们的字符串表示形式

方法是 String 类的一个实用工具方法,它可以接受不同类型的参数,如整数、浮点数、对象等,并返回相应的字符串表示。

eg:

int num = 123;
String str = String.valueOf(num);
System.out.println(str); // 输出: "123"

3.2 Integer.parseInt

将字符串转换为整数

String numberStr = "123";
int number = Integer.parseInt(numberStr); // number 变量的值将是 123

3.3. toCharArray 

toCharArray 是一个方法,它属于 String 类和 StringBuilder 类。这个方法用于将字符串或字符串构建器对象转换为字符数组。

String str = "Hello";
char[] charArray = str.toCharArray();
System.out.println(charArray); // 输出: [H, e, l, l, o]

3.4.substring

substring 方法是 String 类的一个非常有用的实例方法,它用于从原始字符串中提取子字符串。

  1. substring(int beginIndex):从 beginIndex 指定的位置开始提取,直到字符串的末尾。
  2. substring(int beginIndex, int endIndex):从 beginIndex 指定的位置开始,到 endIndex 指定的位置结束(但不包括 endIndex 指定的字符)。

参数说明

  • beginIndex:子字符串开始处的索引(包括此索引)。
  • endIndex:子字符串结束处的索引(不包括此索引)。

3.5.split方法

split 方法是 String 类的一个非常有用的方法,它用于根据指定的分隔符将字符串分割成多个子字符串,并返回一个字符串数组。这个方法非常灵活,可以处理各种字符串分割的需求.

split 方法有两种重载形式:

  1. split(String regex):根据给定的正则表达式 regex 将字符串分割成多个子字符串。
  2. split(String regex, int limit):除了根据正则表达式分割字符串外,还可以指定一个限制参数 limit,用于控制返回数组的最大长度。

参数说明

  • regex:一个正则表达式,用于指定分割字符串的规则。
  • limit(可选):一个整数,用于限制返回数组的最大长度。如果省略这个参数,将返回所有分割后的子字符串。

返回值

  • 返回一个字符串数组,包含分割后的所有子字符串。
String str = "one,two,three";
String[] parts = str.split(",");
System.out.println(Arrays.toString(parts)); // 输出:[one, two, three]

3.6.trim方法

number[i].trim是移除字符串两段的空白元素

3.7.字符串中常用的函数

参考链接:

Java常用字符串方法_java字符串方法-CSDN博客

4.常见输入

4.1.输入是整数序列

1,2,3 类似于这样的

        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] nums = new int[n];
        for(int i=0;i<n; i++)
        {
            nums[i]= scanner.nextInt();
        }

4.2.输入整数数组

[1,2,3,0]这样格式的

  • 首先将整数数组转换成字符串
  • 然后去除字符串的收尾[]
  • 用,号进行分割
  • 将字符串转为整数
Scanner scanner = new Scanner(System.in);
        
        // 提示用户输入数组
        System.out.println("请输入一个数组(例如 [1,2,3,4,0]):");
        String input = scanner.nextLine();
        
        // 去除输入字符串的首尾方括号
        input = input.substring(1, input.length() - 1);
        
        // 将输入的字符串分割成单独的数字字符串
        String[] numbers = input.split(",");
        
        // 创建一个数组来存储整数
        int[] array = new int[numbers.length];
        
        // 将字符串数组转换为整数数组
        for (int i = 0; i < numbers.length; i++) {
            array[i] = Integer.parseInt(numbers[i].trim());
        }
        
        // 关闭 Scanner 对象
        scanner.close();

假如这个题是输入一个整数数组然后对其进行排序再输出,后面的输出部分如下:

// 对数组进行排序
        Arrays.sort(array);
        
        // 输出排序后的数组
        System.out.print("排序后的数组: [");
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i]);
            if (i < array.length - 1) {
                System.out.print(", ");
            }
        }
        System.out.println("]");

4.3.输入是字符串数组形式

例如这样的格式["a","e"," ","f"]

我们以一个题举例吧,对上面的字符串数组求反变为["f"," ", "e","a"]

读取输入输出的整体思路

  • 去除收尾的方括号
  • 将字符串进行分割(使用到正则表达式)====》转为字符串数组
  • 输出时添加方括号和逗号

整体代码如下:

public class ReverseArray {
    public static void main(String[] args) {
        // 创建一个 Scanner 对象来读取控制台输入
        Scanner scanner = new Scanner(System.in);

        // 提示用户输入一个格式化的字符串数组
        System.out.println("请输入一个字符串数组(例如 [\"a\",\"b\",\"\" ,\"d\" ,\"f\"]):");
        String input = scanner.nextLine();

        // 去除输入字符串的首尾方括号
        input = input.substring(1, input.length() - 1);

        // 将输入的字符串分割成单独的字符串元素
        String[] elements = input.split("\\s*,\\s*");

        for (int i = 0; i < elements.length; i++) {
            System.out.println(elements[i]);
        }

        // 反转数组
        String[] reversedArray = reverseArray(elements);


        // 输出反转后的数组
        System.out.print("反转后的数组: [");
        // boolean isFirst = true; // 用于控制逗号的打印
        for (int i = 0; i < reversedArray.length; i++) {
            System.out.print( reversedArray[i]);
            if (i < reversedArray.length - 1){
                System.out.print(",");
            }
        }
        System.out.println("]");
    }

    // 反转数组的方法
    public static String[] reverseArray(String[] array) {
        // 创建一个新的字符串数组,长度与原数组相同
        String[] reversed = new String[array.length];

        // 遍历原数组,并将元素按相反顺序放入新数组
        for (int i = 0; i < array.length; i++) {
            reversed[i] = array[array.length - 1 - i];
        }

        // 返回反转后的数组
        return reversed;
    }
}

怎么控制什么时候添加和不添加逗号,倒数第二次循环

4.4. 输入是字符形式

后续有新的也会持续更新的~~~~~

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

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

相关文章

音频左右声道数据传输_2024年9月6日

如下为音频数据传输标准I2S总线的基本时序图 I2S slave将I2S master发送来的左右声道的串行数据DATA转变为16bit的并行数据 WS为左右声道选择信号&#xff0c;WS高代表左声道&#xff0c;WS低代表右声道; WS为高和为低都持续18个周期&#xff0c;前面16个周期用来传输数据。 I2…

npm安装时候报错certificate has expired

打开了一个很久没用的电脑&#xff0c;npm和node都装好了&#xff0c;安装包的时候一直报错 request to https://registry.npm.taobao.org/create-react-app failed, reason: certificate has expired而且先报错rollbackFailedOptional 然而npm没什么问题&#xff0c;是ssl过…

【数据结构与算法 | 灵神题单 | 自底向上DFS篇】力扣965, 2331, 100, 1379

1. 力扣965&#xff1a;单值二叉树 1.1 题目&#xff1a; 如果二叉树每个节点都具有相同的值&#xff0c;那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时&#xff0c;才返回 true&#xff1b;否则返回 false。 示例 1&#xff1a; 输入&#xff1a;[1,1,1,1,1,n…

UE5学习笔记22-武器瞄准和武器自动开火

0、一些疑问的记录 1.UUserWidget类和AHUD类的区别。两者都是关于界面显示的类。 实践&#xff1a; 想让界面和用户有交互使用UUserWidget&#xff0c;如果不要交互只是显示使用AHUD类&#xff0c;例如使用UUserWidget类制作开始界面&#xff0c;游戏开始&#xff0c;游戏设置&…

TensorRT-LLM——优化大型语言模型推理以实现最大性能的综合指南

引言 随着对大型语言模型 (LLM) 的需求不断增长&#xff0c;确保快速、高效和可扩展的推理变得比以往任何时候都更加重要。NVIDIA 的 TensorRT-LLM 通过提供一套专为 LLM 推理设计的强大工具和优化&#xff0c;TensorRT-LLM 可以应对这一挑战。TensorRT-LLM 提供了一系列令人印…

AD的入门操作

锦囊 1、打开AD后&#xff0c;一般默认打开上一个工程&#xff0c;这个时候如果想要打开新的工程&#xff0c;那就必须要创建一个项目&#xff0c;然后再在项目中添加原理图库和PCB库。 2、大多数情况下&#xff0c;直接使用库&#xff0c;不用自己再画原理图和封装库。 3、…

LeetCode[中等] 49.字母异位词分组

给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 思路&#xff1a; new Dictionary<string, List<string>>() 存储数据&#xff0c;key为排序之后的字符…

超高速传输 -- 相干光通信和非相干光通信

概述&#xff1a;技术对比 项目非相干光通信相干通信定义不需要相干本振光的光传输系统。采用本振光进行相干检测的光传输系统。调制解调技术发送端&#xff1a;强度调制。 接收端&#xff1a;直接检测。发送端&#xff1a;外调制。 接收端&#xff1a;本振光相干检测。码型幅…

完美的宝塔面板防御策略,基于 fail2ban

之前分享过宝塔面板配合fail2ban&#xff0c;以及开启cloudflare的cdn双重防御的教程&#xff0c;并制作了便捷的脚本这次不靠cloudflare的减速cdn&#xff0c;看看防御效果怎么样 系统环境 debian/ubuntu nginx 宝塔面板 注意要点 1.在宝塔面板开启站点日志 2.添加服务器白名…

加密与安全_HTTPS TLS 1.2 连接(RSA 握手)的整个过程解读

文章目录 HTTPS 数据传输的安全性保障SSL/TLS 作为混合加密系统的典范HTTPS TLS 1.2 连接&#xff08;RSA 握手&#xff09;的整个过程TLS 握手过程解析1. TCP 三次握手 (最顶部的黄色部分)2. TLS 握手阶段 (红色部分)2.1 Client Hello2.2 Server Hello2.3 CA 证书验证2.4 Clie…

[Python数据可视化]Plotly Express: 地图数据可视化的魅力

在数据分析和可视化的世界中&#xff0c;地图数据可视化是一个强大而直观的工具&#xff0c;它可以帮助我们更好地理解和解释地理数据。Python 的 Plotly Express 库提供了一个简单而强大的方式来创建各种地图。本文将通过一个简单的示例&#xff0c;展示如何使用 Plotly Expre…

【JavaWeb】利用IDEA2024+tomcat10配置web6.0版本搭建JavaWeb开发项目

之前写过一篇文章&#xff1a;《【JavaWeb】利用IntelliJ IDEA 2024.1.4 Tomcat10 搭建Java Web项目开发环境&#xff08;图文超详细&#xff09;》详细讲解了如何搭建JavaWeb项目的开发环境&#xff0c;里面默认使用的Web版本是4.0版本的。但在某些时候tomcat10可能无法运行we…

24年蓝桥杯及攻防世界赛题-MISC-1

2 What-is-this AZADI TOWER 3 Avatar 题目 一个恐怖份子上传了这张照片到社交网络。里面藏了什么信息&#xff1f;隐藏内容即flag 解题 ┌──(holyeyes㉿kali2023)-[~/Misc/tool-misc/outguess] └─$ outguess -r 035bfaa85410429495786d8ea6ecd296.jpg flag1.txt Rea…

iKuai使用及设置流程

iKuai使用及设置流程 iKuai安装步骤 一、配置主机 1.电脑连接ETH0网口 2.ETH1网口连接猫上面的千兆口 3.手动配置pc的IP地址和192.168.1.1./24在同一网段 3.浏览器输入192.168.1.1 admin admin 二、外网设置 1.直接联通电信网络设置 2.点击 网络设置-内外网设置-点击接…

LeetCode从入门到超凡(一)枚举算法

前言 大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年9月学习赛的LeetCode学习总结文档&#xff1b;本文主要讲解枚举算法。&#x1f495;&#x1f495;&#x1f60a; 一、基本概念 1.定义 定义&am…

记录小数点

记录data frame小数点后面省略掉0的问题 iloc得到的series .to_list() 0被省略掉 to_list() 可能会将浮点数转换为默认格式。先将数据转换为字符串以保留格式 df_2708.iloc[2,:].apply(lambda x: f{x:.3f}).to_list()自定义保留小数点后几位 def formatter(value):return &q…

【工作流集成】springboot+vue工作流审批系统(实际源码)

前言 activiti工作流引擎项目&#xff0c;企业erp、oa、hr、crm等企事业办公系统轻松落地&#xff0c;一套完整并且实际运用在多套项目中的案例&#xff0c;满足日常业务流程审批需求。 一、项目形式 springbootvueactiviti集成了activiti在线编辑器&#xff0c;流行的前后端…

Java 入门指南:JVM(Java虚拟机)垃圾回收机制 —— 垃圾回收算法

文章目录 垃圾回收机制垃圾判断算法引用计数法可达性分析算法虚拟机栈中的引用&#xff08;方法的参数、局部变量等&#xff09;本地方法栈中 JNI 的引用类静态变量运行时常量池中的常量 垃圾收集算法Mark-Sweep&#xff08;标记-清除&#xff09;算法Copying&#xff08;标记-…

电脑右击没有txt文件

文本文档是一个好工具&#xff0c;小而快&#xff0c;比word快多&#xff0c;一般情况下&#xff0c;记录都会先用txt文本&#xff0c;但是今天发现右击菜单新建里面没有&#xff0c;怎么回事&#xff1f; 这个需要打开注册编辑表修改 一、打开注册编辑表 win R 输入regedi…

JetLinks物联网学习(前后端项目启动)

前后端项目启动 1、后端1.1 pgsql改mysql报错2、elasticSearch7.0版本以上_doc格式取消 2、前端 1、后端 环境准备&#xff1a; 1、window系统7,8&#xff0c;10 。 硬件资源最低要求4c8G&#xff0c;硬盘40G 2、JDK 1.8.0_2xx (需要小版本号大于200) 3、Maven3.6.3 4、Redis …