Java输入与输出详解

Java输入和输出

  • 前言
  • 一、Java打印Hello World
  • 二、输出到控制台
    • 基本语法
    • 代码示例
    • 格式化字符串
  • 三、从键盘输入
    • 读入一个字符
      • 正确写法
    • 使用 Scanner 读取字符串/整数/浮点数
    • 使用 Scanner 循环读取 N 个数字


前言

推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏网站,请点击下方链接查看。
https://www.captainbed.cn/f1

Java输入和输出涉及从各种来源(如键盘、文件等)读取数据以及将数据发送到各种目标(如屏幕、文件等)。Java提供了多种流类(如InputStream和OutputStream)来处理这些操作,允许开发者以灵活和高效的方式处理数据输入输出。


一、Java打印Hello World

新生婴儿会以自己独特的方式向这个崭新的世界打招呼,Java刚出来后,也算是一个新事物,

在这里插入图片描述

那Java是否也应该向这个美好的世界来声问候呢?

我们来看下Java是如何来实现问候的。

public static void main(String[] args) {System.out.println("Hello World");
}

在这里插入图片描述

二、输出到控制台

基本语法

System.out.println(msg); // 输出一个字符串, 带换行 
System.out.print(msg);// 输出一个字符串, 不带换行 
em.out.printf(format, msg); // 格式化输出 
  • println 输出的内容自带 \n, print 不带 \n
  • printf 的格式化输出方式和 C 语言的 printf 是基本一致的.

代码示例

public static void main(String[] args) {System.out.println("hello world");int x = 10;System.out.printf("x = %d\n", x);
}

在这里插入图片描述

格式化字符串

转换符类型举例
d十进制整数 ("%d", 100)100
x十六进制整数 ("%x", 100)64
o八进制整数 ("%o", 100)144
f定点浮点数 ("%f", 100f)100.000000
e指数浮点数 ("%e", 100f)1.000000e+02
g通用浮点数 ("%g", 100f)100.000
a十六进制浮点数 ("%a", 100)0x1.9p6
s字符串 ("%s", 100)100
c字符 ("%c", ‘1’)1
b布尔值 ("%b", 100)true
h散列码 ("%h", 100)64
%百分号 ("%.2f%%", 2/7f)0.29%

三、从键盘输入

读入一个字符

直接使用 System.in.read 可以读入一个字符. 但是需要搭配异常处理

public static void main(String[] args) {System.out.print("Enter a Char:");char i = (char) System.in.read();System.out.println("your char is :"+i);
}

在这里插入图片描述

正确写法

import java.io.IOException;// 需要导入 IOException 包
public static void main(String[] args) {try {System.out.print("Enter a Char:");char i = (char) System.in.read();System.out.println("your char is :"+i);} catch (IOException e) {System.out.println("exception");}
}

在这里插入图片描述

使用 Scanner 读取字符串/整数/浮点数

import java.util.Scanner; // 需要导入 util 包
public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入你的姓名:");String name = sc.nextLine();System.out.println("请输入你的年龄:");int age = sc.nextInt();System.out.println("请输入你的工资:");float salary = sc.nextFloat();System.out.println("你的信息如下:");System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);sc.close(); // 注意, 要记得调用关闭方法
}

在这里插入图片描述
这段代码是一个简单的Java程序。它使用了Scanner类来从用户输入中获取数据。

首先,我们导入了java.util.Scanner类,这是一个可以从标准输入中读取数据的工具类。

然后,在main方法中,我们创建了一个Scanner对象sc来读取用户的输入。通过调用nextLine()方法,我们可以获取用户输入的姓名并将其保存在name变量中。接下来,通过调用nextInt()方法,我们获取用户输入的年龄并保存在age变量中。最后,通过调用nextFloat()方法,我们获取用户输入的工资并保存在salary变量中。

然后,我们输出了用户输入的信息。通过使用"+"操作符,我们将字符串和变量连接起来输出。

最后,我们调用了sc.close()方法来关闭Scanner对象,这是一个好的习惯,以释放资源并避免内存泄漏。

这样,程序就会等待用户输入,并将输入的姓名、年龄和工资打印出来。

使用 Scanner 循环读取 N 个数字

import java.util.Scanner; // 需要导入 util 包
public static void main(String[] args) {Scanner sc = new Scanner(System.in);double sum = 0.0;int num = 0;while (sc.hasNextDouble()) {double tmp = sc.nextDouble();sum += tmp;num++;}System.out.println("sum = " + sum);System.out.println("avg = " + sum / num);sc.close();
}

这段代码是一个简单的Java程序,它使用了Scanner类从用户输入中获取一系列的浮点数,并计算它们的总和和平均值。

首先,我们导入了java.util.Scanner类,这是一个用于从标准输入中读取数据的工具类。

然后,在main方法中,我们创建了一个Scanner对象sc来读取用户的输入。接下来,我们初始化了两个变量sumnum,用于保存浮点数的总和和数量。

然后,我们使用一个while循环来判断用户是否还输入了一个浮点数。通过调用sc.hasNextDouble()方法,我们可以判断下一个输入是否是一个浮点数。只要用户输入的还是浮点数,循环就会继续执行。

在循环体内,我们调用sc.nextDouble()方法来获取用户输入的浮点数,并将其保存在临时变量tmp中。然后我们将tmp的值累加到sum变量中,同时将num加1以记录输入的数量。

当用户输入结束后,也就是不再输入浮点数时,循环将会终止。此时,我们输出sum变量的值作为浮点数的总和,并通过sum / num计算出浮点数的平均值。

最后,我们调用sc.close()方法来关闭Scanner对象,这是一个好的习惯,以释放资源并避免内存泄漏。

这样,程序会一直等待用户输入浮点数,并计算它们的总和和平均值,直到没有更多的输入为止。

ps:当循环输入多个数据的时候, 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl +d)
在这里插入图片描述


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

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

相关文章

使用 Java 和 MyBatis 实现动态排序的多表查询

相关 java实现一个根据字段和排序方式进行排序 java实现自定义排序 自定义动态排序 前言 在Web开发中,前端通常会传递一些参数来决定数据的排序方式,例如排序字段和排序方向。本文将展示如何在 Java 项目中结合 MyBatis 实现动态排序,尤其…

MySQL-性能分析

1、数据库服务器的优化步骤 2、查看系统性能参数 可以使用show status语句查询一些MySQL数据库服务器的性能参数 执行频率语法格式:show [ global | session ] status like 参数 ;常用性能参数如下所示 参数名说明connection连接MySQL服务器的次数upti…

Autodesk 3ds Max下载,3ds MAX 2024三维建模渲染软件安装包下载安装

3ds MAX中文版,其强大的功能和灵活的操作为广大用户提供了无限的创意空间,使得高质量动画、最新游戏、设计效果等领域的制作需求得以完美满足。 ​ 作为一款三维建模软件,3ds MAX中文版具备极高的建模精度和渲染质量。它支持多种建模方式&am…

【Fiddler抓包工具】第四节.断点设置和弱网测试

文章目录 前言一、断点设置 1.1 全局断点 1.2 局部断点 1.3 打断点的几种常用命令 1.4 篡改响应报文二、弱网测试 2.1 网络限速 2.2 精准限速总结 前言 一、断点设置 1.1 全局断点 特点: 中断Fiddler捕获的所有请求,包括…

记录一次prometheus因时区不同导致的无法获取数据问题

一、故障出现原因 prometheus机器压力过大,内存耗尽,负载飙高,导致无法登录; 于是从公有云web界面进行重启,重启后内存还是不足,负载很快升高; 对机器进行配置变更,由4C8G升级为4…

在链游中,智能合约如何被用于实现游戏内的各种功能

随着区块链技术的快速发展,链游(Blockchain Games)作为区块链技术的重要应用领域之一,正逐渐展现出其独特的魅力和优势。其中,智能合约作为链游的核心技术之一,对于实现游戏内的各种功能起到了至关重要的作…

【C++初阶】—— 类和对象 (下)

📝个人主页🌹:EterNity_TiMe_ ⏩收录专栏⏪:C “ 登神长阶 ” 🌹🌹期待您的关注 🌹🌹 类和对象 1. 运算符重载运算符重载赋值运算符重载前置和后置重载 2. 成员函数的补充3. 初始化列…

Java的函数式接口和 Lambda 表达式

在 Java 8 中,可以通过使用函数式接口和 Lambda 表达式来实现类似 JavaScript 中将函数作为参数传递的功能。 以下是一个简单的示例,演示如何在 Java 中使用函数式接口将函数作为参数传递: 定义一个函数式接口(函数式接口是只有…

CentOS上升级glibc2.17至glibc2.31

glibc是Linux系统中的重要组件之一。在CentOS中,glibc通常是作为系统的默认C标准库使用的,因为它是许多软件的基础库。在CentOS中,glibc的版本通常与CentOS版本一起发布。因为CentOS通常会优先选择稳定性而不是最新性,所以CentOS使…

Vue项目如何进行XSS防护

前言 在目前主推网络安全的情况下,很多开发项目都需要在上线前进行渗透测试,当符合渗透测试标准及没有安全漏洞即可正常上线,当前还会有代码审计的,这个另当别论。 如何对XSS进行防护 在很多的富文本编辑器项目中,x…

leecode热题100---994:腐烂的橘子

题目: 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格; 值 1 代表新鲜橘子; 值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回…

C++之第九课

课程列表 今天&#xff0c;我们要学习一种结构&#xff1a;循环结构。 循环的方法有3种。 今天先将第1种for学了&#xff1a; int a;//循环变量 int b; for(a1;a<10;a){//像if那样“打包”cout<<a<<" ";b; } 当然&#xff0c;也可以这样写&#…

【MySQL精通之路】InnoDB(5)-内存结构

总目录&#xff1a; 【MySQL精通之路】InnoDB存储引擎-CSDN博客 上一篇&#xff1a; 【MySQL精通之路】InnoDB(4)-架构图-CSDN博客 目录 ​编辑 1 缓存池&#xff08;Buffer Pool&#xff09; 1.1 缓存池LRU算法 1.2 缓存区配置 1.3 使用InnoDB标准监视器监视缓存池 …

SSRF服务端请求伪造漏洞原理与修复及靶场实践

SSRF服务端请求伪造漏洞原理与修复及靶场实践 SSRF漏洞原理与检测 SSRF&#xff08;Server-Side Request Forgery&#xff0c;服务器端请求伪造&#xff09;漏洞是一种因为服务端提供了远程访问服务&#xff0c;而并未对请求目标进行限制或限制不严格而引起的安全漏洞&#x…

Java Apache Jexl规则引擎初体验

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、模板引擎的选择&#xff1f;二、什么是JEXL规则引擎&#xff1f;优点缺点 三、其他规则引擎四、示例1.引入依赖2.方法示例3、代码解释4、效果![import java…

VMware虚拟机Ubuntu 22.04.4 LTS系统 NAT网络设置异常解决

现象&#xff1a; 近日&#xff0c;一直工作正常的虚拟机莫名出现网络无法连接的情况。 参考网上的各种教程&#xff0c;终于解决问题。 如遇到类似情况的&#xff0c;可以尝试这个方式&#xff0c;看能否解决问题。 网络连接&#xff1a;采用NAT模式 异常&#xff1a;网络图标…

C++数据结构——哈希表

前言&#xff1a;本篇文章将继续进行C数据结构的讲解——哈希表。 目录 一.哈希表概念 二.哈希函数 1.除留取余法 三.哈希冲突 1.闭散列 线性探测 &#xff08;1&#xff09;插入 &#xff08;2&#xff09;删除 2. 开散列 开散列概念 四.闭散列哈希表 1.基本框架 …

场内期权怎么开户?佣金手续费最低是多少?

今天期权懂带你了解场内期权怎么开户&#xff1f;佣金手续费最低是多少&#xff1f;我国的首个场内期权是50ETF期权&#xff0c;随着投资者对期权产品日渐熟悉&#xff0c;投资者参与数量与交易量稳步增长。 场内期权怎么开户&#xff1f; 满足资金要求&#xff1a;根据监管要…

自动打卡脚本

奕辅导自动打卡脚本 打卡脚本&#xff0c;使用前需手动打卡一次并需要抓包&#xff0c;在其中找到相关的token。 # -*- encoding:utf-8 -*-import requests import jsonpunch_in_data {"questionnairePublishEntityId": "1001640744275339000980000000001&qu…

MyBatis:Parameter Maps collection does not contain value for 报错解决收录

MyBatis&#xff1a;Parameter Maps collection does not contain value for 报错问题解决收录 1.报错收录 后端测试时偶然遇到的用mybatis生成好的mapper文件&#xff0c;报Result Maps collection does not contain value…的错误 2.报错分析 java.lang.ILledalAraumentEx…