how2j.cn

本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



10分57秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)



步骤 1 : 格式化输出   
步骤 2 : printf和format   
步骤 3 : 换行符   
步骤 4 : 总长度,左对齐,补0,千位分隔符,小数点位数,本地化表达   
步骤 5 : 练习-黄鹤   
步骤 6 : 答案-黄鹤   

步骤 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
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); } }
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"); } }
package digit;
 
public class TestNumber {
 
    public static void main(String[] args) {

    	System.out.printf("这是换行符%n");
    	System.out.printf("这是换行符%n");
    	
    }
}
步骤 4 :

总长度,左对齐,补0,千位分隔符,小数点位数,本地化表达

其他常用的格式化方式
总长度,左对齐,补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); } }
步骤 5 :

练习-黄鹤

Or  姿势不对,事倍功半! 点击查看做练习的正确姿势
借助Scanner 读取字符串数据,然后用格式化输出下面

浙江温州最大皮革厂江南皮革厂倒闭了,王八蛋老板黄鹤吃喝嫖赌,欠下了3.5个亿,带着他的小姨子跑了!我们没有办法,拿着钱包抵工资!原价都是一多、两多、三多的钱包,现在全部只卖二十块,统统只要二十块!黄鹤王八蛋,你不是人!我们辛辛苦苦给你干了大半年,你不发工资,你还我血汗钱,还我血汗钱!
练习-黄鹤
步骤 6 :

答案-黄鹤

在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频

1分3秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)


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); } }


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2019-01-12 哈哈 搞笑版
aa15841738548



package TestNumber; import java.util.Scanner; public class Test1 { public static void main(String[] args) { System.out.printf("请输入地名%n"); Scanner s = new Scanner(System.in); String a = s.next(); System.out.println("请输入公司类型:"); String b = s.next(); System.out.println("请输入公司名称:"); String c = s.next(); System.out.println("请输入老板名称:"); String d = s.next(); System.out.println("请输入金额:"); String e = s.next(); System.out.println("请输入产品:"); String f = s.next(); System.out.println("请输入价格计量单位:"); String g = s.next(); String mode1 = "%s最大%s%s倒闭了,王八蛋老板%s吃喝嫖赌,欠下了%s个亿,\r\n" + "带着他的小姨子跑了!我们没有办法,拿着%s抵工资!原价都是一%s多、两%s多、三%s多的%s,\r\n" + "现在全部只卖二十块,统统只要二十块!%s王八蛋,你不是人!我们辛辛苦苦给你干了大半年,\r\n" + "你不发工资,你还我血汗钱,还我血汗钱!"; System.out.printf(mode1,a,b,c,d,e,f,g,g,g,f,d); }
package TestNumber;
import java.util.Scanner;

public class Test1 {
  
	public static void main(String[] args) {
		  
		
		 System.out.printf("请输入地名%n");
	     Scanner s =  new Scanner(System.in);
		 String a = s.next();
		
		 System.out.println("请输入公司类型:");
		 String b = s.next();
		 
	     System.out.println("请输入公司名称:");   
         String c = s.next();
         
         System.out.println("请输入老板名称:");
         String d = s.next();
         
         System.out.println("请输入金额:");
         String e = s.next();
         
         System.out.println("请输入产品:");
         String f = s.next();
         
         System.out.println("请输入价格计量单位:");
         String g = s.next();
         
         
         String mode1 = "%s最大%s%s倒闭了,王八蛋老板%s吃喝嫖赌,欠下了%s个亿,\r\n"
                 + "带着他的小姨子跑了!我们没有办法,拿着%s抵工资!原价都是一%s多、两%s多、三%s多的%s,\r\n"
                 + "现在全部只卖二十块,统统只要二十块!%s王八蛋,你不是人!我们辛辛苦苦给你干了大半年,\r\n"
                 + "你不发工资,你还我血汗钱,还我血汗钱!";   
         
         
         System.out.printf(mode1,a,b,c,d,e,f,g,g,g,f,d);
	}    

							






答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2018-12-19 交作业,大佬看看我的问题,应该描述清楚了,该怎么改!!!
浪迹



交作业,发现一个问题,不知道怎么解决 结果: 请输入地名:美国 请输入公司类型:互联网 请输入公司名称:苹果科技 请输入老板名字:乔布斯 请输入金额:2000 请输入产品:苹果手机 请输入价格计量单位:万 美国最大互联网苹果科技倒闭了,王八蛋老板乔布斯吃喝嫖赌, 欠下了2000个亿,带着它的小姨子跑了!我们没有办法, 拿着苹果手机抵工资!原价都是一万多,两万多,三万多的苹果手机, 现在全部只卖二十块,统统只要二十块! 乔布斯王八蛋,你不是人!我们辛辛苦苦给你干了大半年, 你不发工资,你个狗日的!
		//练习
		String diming="地名";
		String gslx="公司类型";
		String gsmc="公司名称";
		String lbmz="老板名字";
		String money="金额";
		String cp="产品";
		String dw="价格计量单位";
		String shuru="请输入%s:";
		System.out.printf(shuru,diming);
		Scanner input=new Scanner(System.in);
		String dm=input.next();
		System.out.printf(shuru,gslx);
		String lx=input.next();
		System.out.printf(shuru,gsmc);
		String mc=input.next();
		System.out.printf(shuru,lbmz);
		String lb=input.next();
		System.out.printf(shuru,money);
		int qian=input.nextInt();
		input.nextLine();
		System.out.printf(shuru,cp);
		String chanp=input.next();
		System.out.printf(shuru,dw);
		String danwei=input.next();
		String lianxi="%s最大%s%s倒闭了,王八蛋老板%s吃喝嫖赌,%n"
				+ "欠下了%d个亿,带着它的小姨子跑了!我们没有办法,%n"
				+ "拿着%s抵工资!原价都是一%s多,两%s多,三%s多的%s,%n"
				+ "现在全部只卖二十块,统统只要二十块!%n"
				+ "%s王八蛋,你不是人!我们辛辛苦苦给你干了大半年,%n"
				+ "你不发工资,你个狗日的!";
		System.out.printf(lianxi,dm,lx,mc,lb,qian,chanp,danwei,danwei,danwei,chanp,lb);
		input.close();
输入第一行的内容后,光标跳到第二行开始的位置,需要手动调到合理的输出区域,直接输入的话,后面的内容会出问题


2 个答案

yanyulinxi 答案时间:2019-01-16
next(): read the input only till the space. It can't read two words separated by space. Also, next() places the cursor in the same line after reading the input.

yanyulinxi 答案时间:2019-01-16
用nextline,之前讲过input.next()是不会获取换行符的,所以你的输入流里换行符没过滤掉。




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2018-11-29 作业
2018-11-25 交作业交作业
2018-10-31 交作业
2018-09-13 交作业
2018-08-31 作业!
2018-08-30 按在地上摩擦~
2018-07-25 交作业
2018-07-24 练习遇到问题,请大神指教!
2018-07-24 练习,遇到问题,请大神帮忙解答一下,谢谢!
2018-06-16 练习
2018-06-16 静态方法执行
2018-06-16 练习
2018-05-15 交作业
2018-05-09 在千位分隔符的部分有问题
2018-05-08 作业,格式化输出
2018-02-13 作业
2018-01-16 黄鹤
2018-01-09 String model = "%s最大%s%s倒闭了,王八蛋老板%s吃喝嫖赌,欠下了%s个亿,\r\n"
2018-01-05 关于换行符的疑问
2017-11-19 百度真是天怒人怨
2017-11-19 这种输出风格不应该是C的吗?
2017-07-20 格式化输出,打印过程会报错
2016-09-18 nextLine连续读取中文问题
2016-08-25 有%f 吗?是什么意思,在步骤4里面
2016-07-10 练习 最后两行一起输出,检查也没错误




提问之前请登陆
关于 JAVA 基础-数字与字符串-格式化输出 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 902680467
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: http://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图