Java输入与输出详解

Java输入和输出


前言

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

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


一、Java打印Hello World

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

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

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

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

二、输出到控制台

基本语法

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

代码示例

java 复制代码
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 可以读入一个字符. 但是需要搭配异常处理

java 复制代码
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);
}

正确写法

java 复制代码
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 读取字符串/整数/浮点数

java 复制代码
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 个数字

java 复制代码
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)


相关推荐
艾伦~耶格尔21 分钟前
Spring Boot 三层架构开发模式入门
java·spring boot·后端·架构·三层架构
985小水博一枚呀24 分钟前
【深度学习基础模型】神经图灵机(Neural Turing Machines, NTM)详细理解并附实现代码。
人工智能·python·rnn·深度学习·lstm·ntm
man201726 分钟前
基于spring boot的篮球论坛系统
java·spring boot·后端
2401_8581205343 分钟前
Spring Boot框架下的大学生就业招聘平台
java·开发语言
S hh43 分钟前
【Linux】进程地址空间
java·linux·运维·服务器·学习
唐大爹1 小时前
项目实战:k8s部署考试系统
云原生·容器·kubernetes
转调1 小时前
每日一练:地下城游戏
开发语言·c++·算法·leetcode
Java探秘者1 小时前
Maven下载、安装与环境配置详解:从零开始搭建高效Java开发环境
java·开发语言·数据库·spring boot·spring cloud·maven·idea
攸攸太上1 小时前
Spring Gateway学习
java·后端·学习·spring·微服务·gateway
2301_786964361 小时前
3、练习常用的HBase Shell命令+HBase 常用的Java API 及应用实例
java·大数据·数据库·分布式·hbase