输入输出
1.1 输出到控制台
基本语法
sout(msg); //输出一个字符串,带换行
System.out.print(msg); //输出一个字符串,不带换行
System.out.printf(format,msg); //格式化输出
-
println
输出的内容自带\n
,print
不带\n
-
printf
的格式化输出方式和C语言的printf
是基本一致的
代码示例
System.ouut.println("hello world");
int x = 10;
System.out.println("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) | 0*1.9p6 |
s | 字符串 | ("%s",100) | 100 |
c | 字符 | ("%c",1) | 1 |
b | 布尔值 | ("%b",100) | true |
h | 散列码 | ("%h",100) | 64 |
% | 百分号 | ("%.2f%%",2/7f) | 0.29% |
这个表没必要记住,用到的时候根据需要查一下就ok了
1.2 从键盘输入
使用 Scanner 读取字符串/整数/浮点数
import java.util.Scanner; // 需要导入 util 包
Scanner sc = new Scannee(System.in);
System.out.println("请输入你的姓名:");
String name = sc.nextLine();
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
System.out.println("请输入你的工资:");
floata salary = sc.nextFloat();
System.out.println("你的信息如下:");
System.out.println("姓名:"+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);
sc.close()l;//注意,要记得调用关闭方法
//执行结果
请输入你的姓名:
张三
请输入你的年龄:
18
请输入你的工资:
1000
你的信息如下:
姓名:张三
年龄:18
工资:1000.0
使用 Scanner 循环读取 N 个数字,并求取其平均值
Scanner sc = new Scanner(System.in);
int sum = 0;
int num = 0;
while(sc.hasNextInt()){
int tmp = sc.nextInt();
sum += tmp;
num++;
}
System.out.println("sum = "+ sum);
System.out.println("avg = "+ sum / num );
sc.close();
//执行结果
10
40.0
50.5
^Z
sum = 150.5
avg = 30.1
注意事项:当循环输入多个数据的时候,使用ctrl + z来结束输入(Windows 上使用ctrl + z,Linux / Mac 上使用ctrl+d )
在后续oj题中,遇到IO类型算法题,有各种循环输入的要求,后续给大家介绍
2.猜数字游戏
游戏规则: 系统自动生成一个随机整数(1-100),然后由用户输入一个猜测的数字,如果输入的数字,如果输入的数字比该随机数小。提示 "低 了", 如果输入的数字比该随机数大, 提示 "高了" , 如果输入的数字和随机数相等, 则提示 "猜对了" .
import java..util.Random;
import java.util.Scanner;
class Test{
public static void main (String[] args) {
Random random = new Random (); // 默认随机种子是系统时间
Scanner sc = new Scanner(System.in);
int toGuess = random.nexInt(100);
// System.out.println("toGuess:"+toGuess);
while (true){
System.out.println("请输入要输入的数字:(1-100)");
int num = sc.nextInt();
if(num < toGuess){
sout("低了");
}else if(num > toGuess){
sout("高了");}
else{
sout("猜对了");
break;
}
}
sc.close();
}
}