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
来读取用户的输入。接下来,我们初始化了两个变量sum
和num
,用于保存浮点数的总和和数量。
然后,我们使用一个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
)