输入与输出
本质:方法的调用
(1)输出
System.out.println(msg);
// 输出一个字符串, 带换行,只跟一个参数
System.out.print(msg);
// 输出一个字符串, 不带换行 ,只打印不换行,只跟一个参数
System.out.printf(format, msg);
// 格式化输出,保证第一个参数是格式,可有多个参数。默认不带换行,要加\n
System.out.printf("%d %f %s %s %c \n", 1L,1.0,"Hello",true,'c');
(/ 斜杠,\ 反斜杠 转义符(escape), \n 换行,\r 回车, \t 制表符)
(2)从键盘输入
使用Scanner读取字符串、整数、浮点数
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextLine()){
String line = scanner.nextLine(); //nextLine以行为单位
System.out.println(line);
}
// 结果 扫描器
// 扫描器
// 第四节
// 第四节
// 逻辑控制
// 逻辑控制
// ^D
// Hello World 你好 世界
// Hello World 你好 世界
// ^D
while (true) { // ctrl + d/z 结束
boolean b = scanner.hasNextLine();
if (!b) {
break;
}
String line = scanner.nextLine();
System.out.println(line);
}
System.out.println("结束");
// 结果 扫描器
// 扫描器
// 第四节
// 第四节
// 逻辑控制
// 逻辑控制
// ^D
while (scanner.hasNextLine()){
String next = scanner.next(); //next默认取下一个单词,以空格区分的单词
System.out.println(next); //以空格分割的单词为单位
}
// 结果 Hello World 你好 世界
// Hello
// World
// 你好
// 世界
while (scanner.hasNextBigInteger()){
int i = scanner.nextInt(); // nextInt 以空格分割的单词为单位,但转成整型
System.out.println(i);
}
// 结果 1 2 3 4
// 1
// 2
// 3
// 4
// hello 此时的hello不是数字,不在语法范围内,自动当没有数字执行,即没有下一行
练习:猜数字游戏
分析: A、生成一个[1-100]的随机数,toGuess
B、读取用户输入的一个数字,记为inPut
C、inPut < toGuess ,提示用户猜小了
inPut > toGuess ,提示用户猜大了
inPut = toGuess ,提示用户猜对了
D、最多猜三次
Random random = new Random(2011); //此时随机种子是固定的,方便测试
int ToGuess = random.nextInt(100) + 1; //当只有100时求的是[0-99],所以后面需要 + 1
Scanner scanner = new Scanner(System.in);
int maxCount = 3; //最多只能猜3次
int count= 0;
while (true) {
if (count >= maxCount){
System.out.println("超过次数");
break;
}
count++;
//一定先看用户有没有输入(hasNextInt)
//然后才能在用户有输入的情况下取输入(nextInt)
boolean 用户没按ctrlD = scanner.hasNextInt();
if (! 用户没按ctrlD ) { //判断用户到底有没有输入内容
System.out.println("用户不玩了");
break;
}
int input = scanner.nextInt();
if (input < ToGuess) {
System.out.println("猜小了");
} else if (input > ToGuess) {
System.out.println("猜大了");
} else {
System.out.println("猜对了");
break;
}
}
// 结果 67
// 小了
// 76
// 小了
// 98
// 小了
// 超过次数