导入包:import java.util.*;
构造Scanner对象:Scanner in=new Scanner(System.in);//in可更改
常用数据类型的输入:(1):int num=in.nextInt();
(2):short num=in.nextShort();
(3):byte num=in.nextByte();
(4):long num=in.nextLong();
(5):double num=in.nextDouble();
(6):float num=in.nextFloat();
(7):String str=in.nextLine();
(8):boolean bool=on.nextBoolean()
(1):System.out.println();//打印结束后换行
(2):System.out.print();//打印结束不换行
(3):System.out.printf();//格式化输出
println()和print()没什么好说的,这里主要介绍printf()
格式化说明符首先认识一下格式说明符:
%d 十进制整数
%x 十六进制整数
%o 八进制整数
%f 定点浮点数
%e 指数浮点数
%g 通用浮点数
%a 十六进制浮点数
%s 字符串
%c 字符
%b 布尔值
%h 散列码
%tc 日期时间
%% 百分号
%n 与平台有关的行分隔符
我们可能对%d %c %s 很熟悉,%o %b %% 也可以理解,可是什么叫定点浮点数呢,接下来看一看定点数和浮点数的概念
定点数:定点小数是计算机处理的数值数据多数带有小数,小数点在计算机中通常有两种表示方法,一种是约定所有数值数据的小数点隐含在某一个固定位置上,称为定点表示法,简称定点数
浮点数:浮点数,是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。
我认为可以简单地理解为,定点数是精确具有确定值的数,而浮点数是不确定的数,你不知道计算机中到底是什么值,比如两个double数相减4.0-3.11,计算机中计算存储的结果可能就不是0.89,而是其他值。
而定点浮点数我认为就是固定截取几位作为值,代码示例如下
public class Demo9 {
public static void main(String[] args) {
double x=4.0;
double y=2.11;
System.out.println(x-y);
System.out.printf("%f",x-y);//定点浮点数
System.out.printf("%g",x-y);//通用浮点数
}
//运行结果
//1.8900000000000001
//1.890000
//1.89000
}
可以看到,定点浮点数截取小数点后六位,通用浮点数截取小数点后五位
指数浮点数呢,当然是用指数形式,或者准确点数,用科学计数法表示浮点数
public class Demo10 {
public static void main(String[] args) {
System.out.printf("%e\n",22222.3);
System.out.printf("%e",0.023);
}
//运行结果
//2.222230e+04
//2.300000e-02
}
十六进制浮点数呢,先以代码为例
public class Demo11 {
public static void main(String[] args) {
System.out.printf("%a\n",16.16);
System.out.printf("%f",0x1.028f5c28f5c29p4);
}
//运行结果
//0x1.028f5c28f5c29p4
//16.160000
}
相信读者看到结果一定很蒙,我也很蒙
首先我们要知道十进制的16.16的十六进制表示是多少,经计算是10.28F5C("28F5C"循环)近似为10.28F5C28F5C29,p4什么意思呢,2的4次方的16,1.028f5c28f5c29(16进制)乘16 (十进制)的结果就是10.28F5C("28F5C"循环)
%n就是格式化输出中的换行,适用于不同平台
%tc 可以用于输出当前时间,代码格式如下
import java.util.*;//不要忘了导入包
public class demo1 {
public static void main(String[] args) {
System.out.printf("%tc",new Date());
}
//运行结果
//周五 5月 06 18:27:35 CST 2022
}
还剩下最后一个散列码 %h,好吧,这个我查了资料,两个字,不会,太难,起码现在没有事无巨细了解的必要。这里就不介绍了,毕竟我也不会,哈哈。
当然,printf()不止有这些,还有一些额外的格式控制以及时间和日期转换符,下面以代码示例一些常用的
public class Demo3 {
public static void main(String[] args) {
int num1=5;
int num2=-5;
//打印数字符号
System.out.printf("%+d %+d\n",num1,num2);
//设置域宽
System.out.printf("%5d\n",num1);
//左对齐
System.out.printf("%-5d%-5d\n",num1,num2);
//添加分组分隔符
System.out.printf("%,d",1111111111);
}
//运行结果
//+5 -5
// 5
//5 -5
//1,111,111,111
}
本次输入输出就了解到这里,如有错误,望指正
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)