输入和输出
输出
- 换行输出:
System.out.println()
- 不换行输出:
System.out.print()
格式化输出
如果要将计算机表示的数据转换成人希望阅读的格式,就需要进行格式化输出。
这一点和C语言中的很像:
public class Hello {
public static void main(String[] args) {
double d = 3.1415926;
System.out.printf("%.2f\n", d);
System.out.printf("%.3f\n", d);
}
}
看到printf
,熟悉吗?
Java中提供了很多格式化的占位符:
占位符 | 说明 |
---|---|
%d | 格式化输出整数 |
%x | 格式化输出十六进制整数 |
%f | 格式化输出浮点数 |
%e | 格式化输出科学计数法表示的浮点数 |
%s | 格式化字符串 |
%
表示占位符,如果想表示%
本身,就需要用%%
也就是两个%
连用。
Java 中一些特殊的写法,比如将整数格式化成十六进制:
public class Hello {
public static void main(String[] args) {
int n = 12345000;
System.out.printf("n=%d, hex=%08x\n", n, n); // 用 0 补足到 8 位
System.out.printf("n=%d, hex=%010x\n", n, n); // 用 0 补足到 10 位
System.out.printf("n=%d, hex=%x", n, n); // 不用 0 补足
}
}
详细的格式化参数见JDK文档: java.util.Formatter
输入
和输出相比,Java的输入要相对复杂。
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
var scanner = new Scanner(System.in);
System.out.print("请输入姓名:");
String name = scanner.nextLine();
System.out.print("请输入年龄:");
int age = scanner.nextInt();
System.out.println("姓名:" + name + " " + "年龄:" + age);
}
}
- 首先,导入类
Scanner
var scanner = new Scanner(System.in)
实例化一个输入类,传入标准输入流System.in
scanner.nextLine()
不出意外表示一整行scanner.nextInt()
表示读入一个整数
练习
请帮小明同学设计一个程序,输入上次考试成绩(int)和本次考试成绩(int),然后输出成绩提高的百分比,保留两位小数位(例如,21.75%)。
答案
import java.util.Scanner;
public class Main {
static int last;
static int now;
public static void main(String[] args) {
var scanner = new Scanner(System.in);
System.out.print("请输入上一次的考试成绩: ");
last = scanner.nextInt();
System.out.print("请输入这一次的考试成绩: ");
now = scanner.nextInt();
System.out.printf("%%%.2f", (float) now / (float) last * 100);
}
}