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)
在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

tomcat jdbc连接池的默认配置

MySQL 5.0 以后针对超长时间数据库连接做了一个处理,即一个数据库连接在无任何操作情况下过了 8 个小时后(MySQL 服务器默认的超时时间是 8 小时),MySQL 会自动把这个连接关闭。在数据库连接池中的 connections 如果空闲超过 8 小时,MySQL 将…

详解 UML 中的关系概念

关联(Association) 表示两个类之间的一种语义性联系。例如: 学生与班级之间的关联关系。 有向关联(Directed Association) 关联关系有方向性,表示一个类能访问另一个类,但不一定反过来。例如: 教师能查看学生的成绩,但学生不能查…

PMapper:助你在AWS中实现IAM权限快速安全评估

关于PMapper PMapper是一款功能强大的脚本工具,该工具本质上是一个基于Python开发的脚本/代码库,可以帮助广大研究人员识别一个AWS账号或AWS组织中存在安全风险的IAM配置,并对IAM权限执行快速评估。 PMapper可以将目标AWS帐户中的不同IAM用户…

C++入门:从C语言到C++的过渡(1)

目录 1.什么是C 2.C的标准库 3.命名空间 3.1为什么要存在命名空间 3.2命名空间的定义 3.3命名空间的使用 3.3.1域作用限定符 3.3.2using关键字引入某个成员 3.3.3using关键字引入命名空间名称 3.4命名空间的嵌套 3.5命名空间的合并 4.C中的输入与输出 1.什么是C C&am…

BatBot智慧能源管理平台,更加有效地管理能源

随着能源消耗的不断增加,能源管理已成为全球面临的重要问题。BatBot智慧能源管理作为一种的能源管理技术,促进企业在用能效率及管理有着巨大的提升。 BatBot智慧能源管理是一种基于人工智能技术的能源管理系统,通过智能分析和优化能源使用&…

7. 3 层神经网络的实现和输出层的激活函数

目录 1. 3 层神经网络的实现 1.1 输入层数据到 1 层神经元 1.2 1 层神经元到 2 层神经元 1.3 2 层神经元到输出层神经元 2. 输出层的激活函数 2.1 恒等函数 2.2 softmax 函数 2.2.1 softmax 函数表达式 2.2.2 softmax 代码实现 2.2.3 softmax 的改进 2.2.3 softmax 函…

Mixiy(米思齐)安装

Mixiy(米思齐)安装 官网地址:爱上米思齐 打开官网,选择下图的软件进行下载 复制提取码,点击链接跳转到网盘进行下载,选择(RC4完整版) 下载完成后,解压到合适的位置,进入文件夹,双击Mixly.exe即…

Spark SQL【Java API】

前言 之前对 Spark SQL 的影响一直停留在 DSL 语法上面,感觉可以用 SQL 表达的,没有必要用 Java/Scala 去写,但是面试一段时间后,发现不少公司还是在用 SparkSQL 的,京东也在使用 Spark On Hive 而不是我以为的 Hive O…

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

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

一.ffmpeg 将内存中的H264跟PCM 数据流合成多媒体文件

在有一些嵌入式平台中,H264数据流一般来自芯片内部的硬编码器, AAC音频数据则是通过采集PCM进行软编码,但是如何对它实时进行封装多媒体文件 ,参考ffmpeg example,花了一些时间终于实现了该功能。 流程图如下&#xf…

es问题汇总--待完善

1. 查询某个索引库中数据总量 方式一: CountRequest 鄙人喜欢这种方式 public long getTotalNum(String indexName) throws IOException {CountRequest countRequest new CountRequest(indexName);// 如果需要,你可以在这里添加查询条件// countReques…

内脏油脂是什么?如何减掉?

真想减的人,减胖是很容易的,但想要形体美又健康,还是得从减内脏油脂开始,那么,问题来了,什么是内脏油脂? 油脂它分部于身体的各个角落,四肢、腹部、腰、臀部、脸、脖子...等&#xf…

暴雨信息液冷计算解决方案亮相CCIG 2024

5月24日,2024中国图象图形大会(CCIG)在陕西西安正式开幕。作为涵盖图像图形各专业领域的综合性的全国性学术会议,CCIG面向开放创新、交叉融合的发展趋势,为图像图形相关领域的专家学者和产业界的同仁,搭建了…

深入用户内心:设计师如何通过可用性测试洞察用户需求

可用性测试是指让用户体验产品的原型或成品。设计师通过观察和分析用户的使用行为和感受,进一步合理地改进产品的设计方法。你可能会想知道我们可以用什么方法来测试可用性?随着互联网行业的快速迭代更新,可用性测试衍生出了许多类型和方法。…

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

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

报错:找不到或无法加载主类 com.example.SpringbootApplication(idea)

OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 错误: 找不到或无法加载主类 com.example.SpringbootApplication 原因: java.lang.NoClassDefFoundError: com/example/SpringBootAppli…

C++---运算符重载

运算符重载介绍 在类中重新定义运算符,赋予运算符新的功能以适应类的运算,就称为运算符重载。 运算符重载是一种形式的C多态,它使得对象操作更直观,本质上也是属于函数重载。 实际上,我们已经在不知不觉之中使用了运算符重载。例如&#xff…

【JAVA |再谈接口、Object、内部类】Object类中子类重写,Cloneable 接口、比较器、内部类

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 🎈丠丠64-CSDN博客🎈 ✨✨ 帅哥美女们,我们共同加油!一起…

python写页面自动截图

from selenium import webdriver def take_screenshot(url, file_path):driver webdriver.Chrome()driver.get(url)driver.save_screenshot(file_path)driver.quit() if __name__ __main__:take_screenshot(http://baidu.com, D:\桌面\wang.png)要安装selenium还要安装google…

React类组件生命周期详解

在React的类组件中,从组件创建到组件被挂载到页面中,这个过程react存在一系列的生命周期函数,最主要的生命周期函数是componentDidMount、componentDidUpdate、componentWillUnmount 生命周期图例如下 1. componentDidMount组件挂载 如果你…