Java中输入输出方式详细讲解
作者:永黯魔主
这篇文章主要给大家介绍了关于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输入输出方式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!