Java自学-数字与字符串 格式化输出
java 使用printf或format 进行格式化输出
步骤 1 : 格式化输出
如果不使用格式化输出,就需要进行字符串连接,如果变量比较多,拼接就会显得繁琐
使用格式化输出,就可以简洁明了
%s 表示字符串
%d 表示数字
%n 表示换行
package digit; public class testnumber { public static void main(string[] args) { string name ="盖伦"; int kill = 8; string title="超神"; //直接使用+进行字符串连接,编码感觉会比较繁琐,并且维护性差,易读性差 string sentence = name+ " 在进行了连续 " + kill + " 次击杀后,获得了 " + title +" 的称号"; system.out.println(sentence); //使用格式化输出 //%s表示字符串,%d表示数字,%n表示换行 string sentenceformat ="%s 在进行了连续 %d 次击杀后,获得了 %s 的称号%n"; system.out.printf(sentenceformat,name,kill,title); } }
步骤 2 : printf和format
printf和format能够达到一模一样的效果,通过eclipse查看java源代码
可以看到,在printf中直接调用了format
package digit; public class testnumber { public static void main(string[] args) { string name ="盖伦"; int kill = 8; string title="超神"; string sentenceformat ="%s 在进行了连续 %d 次击杀后,获得了 %s 的称号%n"; //使用printf格式化输出 system.out.printf(sentenceformat,name,kill,title); //使用format格式化输出 system.out.format(sentenceformat,name,kill,title); } }
步骤 3 : 换行符
换行符就是另起一行 --- '\n' 换行(newline)
回车符就是回到一行的开头 --- '\r' 回车(return)
在eclipse里敲一个回车,实际上是回车换行符
java是跨平台的编程语言,同样的代码,可以在不同的平台使用,比如windows,linux,mac
然而在不同的操作系统,换行符是不一样的
(1)在dos和windows中,每行结尾是 “\r\n”;
(2)linux系统里,每行结尾只有 “\n”;
(3)mac系统里,每行结尾是只有 "\r"。
为了使得同一个java程序的换行符在所有的操作系统中都有一样的表现,使用%n,就可以做到平台无关的换行
package digit; public class testnumber { public static void main(string[] args) { system.out.printf("这是换行符%n"); system.out.printf("这是换行符%n"); } }
步骤 4 : 总长度,左对齐,补0,千位分隔符,小数点位数,本地化表达
其他常用的格式化方式
package digit; import java.util.locale; public class testnumber { public static void main(string[] args) { int year = 2020; //总长度,左对齐,补0,千位分隔符,小数点位数,本地化表达 //直接打印数字 system.out.format("%d%n",year); //总长度是8,默认右对齐 system.out.format("%8d%n",year); //总长度是8,左对齐 system.out.format("%-8d%n",year); //总长度是8,不够补0 system.out.format("%08d%n",year); //千位分隔符 system.out.format("%,8d%n",year*10000); //小数点位数 system.out.format("%.2f%n",math.pi); //不同国家的千位分隔符 system.out.format(locale.france,"%,.2f%n",math.pi*10000); system.out.format(locale.us,"%,.2f%n",math.pi*10000); system.out.format(locale.uk,"%,.2f%n",math.pi*10000); } }
练习:
借助scanner 读取字符串数据,然后用格式化输出下面
浙江温州最大皮革厂 江南皮革厂倒闭了,王八蛋老板黄鹤吃喝嫖赌,欠下了3.5个亿,带着他的小姨子跑了!我们没有办法,拿着钱包抵工资!原价都是一百多、两百多、三百多的钱包,现在全部只卖二十块,统统只要二十块!黄鹤王八蛋,你不是人!我们辛辛苦苦给你干了大半年,你不发工资,你还我血汗钱,还我血汗钱!
答案:
package digit; import java.util.locale; import java.util.scanner; public class testnumber { public static void main(string[] args) { scanner s = new scanner(system.in); system.out.println("请输入地名:"); string location = s.nextline(); system.out.println("请输入公司类型:"); string companycategory = s.nextline(); system.out.println("请输入公司名称:"); string companyname = s.nextline(); system.out.println("请输入老板名称:"); string bossname = s.nextline(); system.out.println("请输入金额:"); string money = s.nextline(); system.out.println("请输入产品:"); string product = s.nextline(); system.out.println("请输入价格计量单位:"); string unit = s.nextline(); string model = "%s最大%s%s倒闭了,王八蛋老板%s吃喝嫖赌,欠下了%s个亿,\r\n" + "带着他的小姨子跑了!我们没有办法,拿着%s抵工资!原价都是一%s多、两%s多、三%s多的%s,\r\n" + "现在全部只卖二十块,统统只要二十块!%s王八蛋,你不是人!我们辛辛苦苦给你干了大半年,\r\n" + "你不发工资,你还我血汗钱,还我血汗钱!"; system.out.format(model, location,companycategory,companyname,bossname,money,product,unit,unit,unit,product,bossname); } }
上一篇: C#中的一些对话框问题处理
下一篇: 拼多多拼什么,又为什么是上海?