Java中输入输出方式详细讲解

 更新时间:2023年09月25日 11:08:44   作者:永黯魔主  
这篇文章主要给大家介绍了关于Java中输入输出方式的相关资料,Java输入输出是指使用java提供的一些类和方法来实现数据的输入和输出,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

学过C语言的都是知道,在C语言中,输入用scanf()函数,输出用printf。那么,Java中,输入输出的方式是怎样的呢?这篇文章,我们来详细讨论一下Java中的输入输出方式。

一、输出到控制台

在前面几篇文章中,我们会经常用到打印,其实,打印就是Java中的一种常用的输出方式。所以,我们先来看看输出

  • 基本语法
System.out.println(msg); // 输出一个字符串, 带换行
System.out.print(msg); // 输出一个字符串, 不带换行
System.out.printf(format, msg); // 格式化输出

(1)println 输出的内容自带 \n, print 不带 \n。

(2)printf 的格式化输出方式和 C 语言的 printf 是基本一致的。

  • 代码示例
System.out.println("hello world"); 
int x = 10; 
System.out.printf("x = %d\n", x);
  • 格式化字符串当我们使用printf格式化输出的时候,会用到格式化字符串。下面这个表格,在我们需要用到的时候,可以方便查一下。
转换符类型举例
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.err.println(msg);

示例代码:

public class Test {
    public static void main(String[] args) {
        System.out.println("正确输出");
        System.err.println("错误输出");      //错误
    }
}

在这里插入图片描述

从运行结果,我们可以看到,错误输出被标记为红色了,而且我代码的书写顺序是先正确输出,后错误输出,但是执行结果是,错误输出先打印。这是因为存在一个优先级的问题,JVM内部会将错误的优先输出

二、从键盘输入

  • 读入一个字符直接使用 System.in.read 可以读入一个字符. 但是需要搭配异常处理(关于异常处理后面会重点讲到)
import java.io.IOException; // 需要导入 IOException 包
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"); 
}

或者是:

import java.io.IOException;
public class Test {
    public static void main(String[] args) throws IOException {  //需要声明异常
        System.out.println("请输入一个字符!");
        char ch = (char) System.in.read();
        System.out.println("这个字符是:" + ch);
    }
}

这种方式非常麻烦,还特别容易出错,所以强烈不推荐使用

  • 使用 Scanner 读取字符串/整数/浮点数
import java.util.Scanner; // 需要导入 util 包
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(); // 注意, 要记得调用关闭方法
// 执行结果
请输入你的姓名:
张三
请输入你的年龄:
18 
请输入你的工资:
1000 
你的信息如下:
姓名: 张三
年龄:18 
工资:1000.0
  • 使用Scanner循环读取N个数字
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(); 
// 执行结果
10 
40.0 
50.5 
^D
sum = 150.5 
avg = 30.1

当循环输入多个数据的时候, 使用 ctrl + z(JDK1.7之前) 来结束输入 。现在统一使用ctrl+d来结束输入

  • 猜数字游戏游戏规则:系统自动生成一个随机整数(1-100), 然后由用户输入一个猜测的数字. 如果输入的数字比该随机数小, 提示 “低了”, 如果输入的数字比该随机数大, 提示 “高了” , 如果输入的数字和随机数相等, 则提示 “猜对了”。
import java.util.Random;
import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Random random = new Random();
        int toGuess = random.nextInt(100);         //随机生成一个1~100以内的任意整数
        while (true){
            System.out.println("请输入要输入的数字!");
            int num = sc.nextInt();
            if(num < toGuess){
                System.out.println("小了");
            }else if(num > toGuess){
                System.out.println("大了");
            }else {
                System.out.println("恭喜你猜对了!");
                break;
            }
        }
        sc.close();                               //最后,记得关闭输入
    }
}

总结 

到此这篇关于Java中输入输出方式的文章就介绍到这了,更多相关Java输入输出方式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java多线程实现交通灯管理系统

    java多线程实现交通灯管理系统

    这篇文章主要为大家详细介绍了java多线程实现交通灯管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 如何在JDK 9中更简洁使用 try-with-resources 语句

    如何在JDK 9中更简洁使用 try-with-resources 语句

    本文详细介绍了自 JDK 7 引入的 try-with-resources 语句的原理和用法,以及介绍了 JDK 9 对 try-with-resources 的改进,使得用户可以更加方便、简洁的使用 try-with-resources 语句。,需要的朋友可以参考下
    2019-06-06
  • mybaties plus selectMaps和selectList的区别说明

    mybaties plus selectMaps和selectList的区别说明

    这篇文章主要介绍了mybaties plus selectMaps和selectList的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • 微服务springcloud 03.Eureka实现高可用的过程

    微服务springcloud 03.Eureka实现高可用的过程

    这篇文章主要介绍了微服务springcloud 03.Eureka实现高可用的相关资料,本文给大家介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • Java导出txt文件的方法

    Java导出txt文件的方法

    这篇文章主要介绍了Java导出txt文件的方法,实例分析了两种java导出txt文本文件的使用技巧,需要的朋友可以参考下
    2015-05-05
  • 详细解读Java的串口编程

    详细解读Java的串口编程

    这篇文章主要介绍了详细解读Java的串口编程,而文中讲解的示例主要针对于JavaComm和RxTx这两个库,需要的朋友可以参考下
    2015-08-08
  • 浅谈java获取UUID与UUID的校验

    浅谈java获取UUID与UUID的校验

    这篇文章主要介绍了java获取UUID与UUID的校验,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Java synchronized最细讲解

    Java synchronized最细讲解

    synchronized是Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。本文给大家介绍java中 synchronized的用法,对本文感兴趣的朋友一起看看吧
    2021-09-09
  • java8的stream如何取max

    java8的stream如何取max

    这篇文章主要介绍了java8的stream如何取max问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • SpringBoot用JdbcTemplates操作Mysql实例代码详解

    SpringBoot用JdbcTemplates操作Mysql实例代码详解

    JdbcTemplate是Spring框架自带的对JDBC操作的封装,目的是提供统一的模板方法使对数据库的操作更加方便、友好,效率也不错,这篇文章主要介绍了SpringBoot用JdbcTemplates操作Mysql
    2022-10-10

最新评论