输出语句
今天我们来详细讲解java中的输入输出语句。在前几篇文章中,我们所有的讲解都用到了输出语句,比如hello world 。对数据进行一系列操作后输出运行结果。可以说输入输出语句会贯彻我们整个编程生涯,是非常基础且重要的。
我们之前用的最多的就是System.out.println(); 有的初学者会想,print是打印也就是输出的意思了,那为什么还要用println呢?
首先给大家讲解一下,println 是print line 的缩写,也就是打印并且换行的意思,如果不使用println,会导致输出的内容全部都到了一行上去。下面用小例子给大家演示一下。
// 使用print(不换行)
System.out.print("张三的年龄是18 ");
System.out.print("王五的年龄是20 ");
System.out.print("李四的年龄是19");
System.out.println(); // 手动换行
// 使用println(自动换行)
System.out.println("张三的年龄是18");
System.out.println("王五的年龄是20");
System.out.println("李四的年龄是19");
//大家可以很明显的看到区别
大家可以自己复制用idea运行一下,可以清晰的看出带ln的print和不带ln的print的区别。
怎么样,是不是非常简单明了呢?下面我们讲解一下格式化输出。
格式化输出
有很多初学者上来不理解什么是格式化输出,我这样说就很好理解了,格式化输出,就是按照你想要的输出格式来进行输出。举个例子。我们现在有一串小数double n=1.23456。我们现在想把这个n分别用保留两位小数,保留三位小数来输出。我们用上面的println是不是就不太好实现了呢。所以,格式化输出就是为了解决这类问题的。
我们先用一个小例子给大家看一下。
double n=1.23456;
System.out.printf("%.2f\n",n); //1.23
System.out.printf("%.3f\n",n); //1.235
// \n的作用是换行
上面的代码,就是使用格式化输出分别保留两位小数和三位小数。
然后我们来讲解一下,首先%,这个是占位符后面跟着的是格式字符串,%f表示n使用浮点数的格式输出.2f表示保留两位小数。同理.3表示保留三位小数。整个意思就是使用保留两位小数的浮点数格式输出。
还有一些其它格式
%d 说明:格式化输出整数
%x 说明:格式化输出十六进制整数
%f 说明:格式化输出浮点数
%e 说明:格式化输出科学计数法表示的浮点数
%s 说明:格式化字符串
以上就是输出的内容,然后我们用个小例子来练习一下。
需求:定义一个浮点型变量表示身高(米),一个整数变量表示体重(千克),使用 printf()
按指定格式输出
double high = 1.75;
int weight = 60;
System.out.printf("身高%.1f米,体重%dKG",high,weight);
//身高1.7米,体重60KG
自己手动尝试一下吧。
输入语句
之所以把输入语句放在输出的后面来讲解,一方面是因为输入语句比输出语句复杂一点。另一方面验证输入有没有成功要使用输出配合着来。
要使用输入语句,首先我们要导入java中预先帮我们实现好的工具类。
import java.util.Scanner;
public class Test {
public static void main(String[] args){
// 创建Scanner对象,System.in表示从键盘读取输入
Scanner scanner=new Scanner(System.in);
System.out.print("请输入你的名字:");
// 读取一整行字符串,意思是读取完后赋值给name
String name=scanner.nextLine();
System.out.println("你好!"+name);
//用完记得关闭
scanner.close();
}
}
再看下面这个
Scanner scanner=new Scanner(System.in);
System.out.print("请输入你的姓名:");
String name=scanner.nextLine();
System.out.print("请输入你的年龄:");
int age=scanner.nextInt(); // // 注意:这种方式如果后面还有nextLine()会有缓冲区问题
System.out.println("你的姓名是"+name+",年龄是"+age+"岁");
scanner.close();
使用输入的注意事项
在使用Scanner时,有几个需要注意的地方:
1. 类型转换:如果要输入数字,可以有两种方式:
// 方式1:使用专门的方法
int age = scanner.nextInt();
// 方式2:先读取字符串再转换(推荐)
int age = Integer.parseInt(scanner.nextLine());
2. 推荐统一使用nextLine():为了避免输入缓冲区的问题,
建议所有输入都使用nextLine()然后进行类型转换。
上面是我自己在控制台输入的内容以及输出。
大家最好是看过后自己不照着盲敲出来,这样可以更好的帮助大家理解吸收
欢迎大家指正不足之处以及错误之处,相互学习共同进步,下一期我们将讲解判断语句。