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

Java自学-数字与字符串 格式化输出的更多相关文章

  1. Java自学-数字与字符串 字符串

    Java中的字符串String 示例 1 : 创建字符串 字符串即字符的组合,在Java中,字符串是一个类,所以我们见到的字符串都是对象 常见创建字符串手段: 每当有一个字面值出现的时候,虚拟机就会创 ...

  2. Java自学-数字与字符串 字符串转换

    Java中把数字转换为字符串,字符串转换为数字 步骤 1 : 数字转字符串 方法1: 使用String类的静态方法valueOf 方法2: 先把基本类型装箱为对象,然后调用对象的toString pa ...

  3. Java自学-数字与字符串 字符

    Java中的字符 示例 1 : 保存一个字符的时候使用char package character; public class TestChar { public static void main(S ...

  4. Java自学-数字与字符串 MyStringBuffer

    自己开发一个Java StringBuffer 根据接口IStringBuffer ,自己做一个MyStringBuffer 步骤 1 : IStringBuffer接口 package charac ...

  5. Java自学-数字与字符串 StringBuffer

    Java StringBuffer常见方法 StringBuffer是可变长的字符串 示例 1 : 追加 删除 插入 反转 append追加 delete 删除 insert 插入 reverse 反 ...

  6. Java自学-数字与字符串 比较字符串

    Java 比较字符串 示例 1 : 是否是同一个对象 str1和str2的内容一定是一样的! 但是,并不是同一个字符串对象 package character; public class TestSt ...

  7. Java自学-数字与字符串 操纵字符串

    Java常见字符串方法 示例 1 : 获取字符 charAt(int index)获取指定位置的字符 package character; public class TestString { publ ...

  8. Java自学-数字与字符串 装箱和拆箱

    Java中基本类型的装箱和拆箱 步骤 1 : 封装类 所有的基本类型,都有对应的类类型 比如int对应的类是Integer 这种类就叫做封装类 package digit; public class ...

  9. Java自学-数字与字符串 数学方法

    Java Math类常用方法 java.lang.Math提供了一些常用的数学运算方法,并且都是以静态方法的形式存在 步骤 1 : 四舍五入, 随机数,开方,次方,π,自然常数 package dig ...

随机推荐

  1. django中运行定时任务脚本

    需要使用到django_apscheduler模块,因此先安装: pip install django-apscheduler 然后在工程的settings.py文件中的INSTALLED_APPS模 ...

  2. Wpf DataGrid动态添加列,行数据(一)

    由于最近有这方面的需求,而且刚接触wpf不久,在网上找了很多方法,都不是使用MVVM模式的,因为DataGrid的列不能绑定 这就难受了,我想了个折中的方法,这个是使用了MVVMLight的消息机制, ...

  3. Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.qingmu.mybaitsplus.mapper.UserMapper' available:

    java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.conte ...

  4. windows命令行模式打开目录

    cmd命令行里面,打开当前目录方式如下: explorer .

  5. Kubernetes Pod的数据卷Volume

    概述 由于容器本身是非持久化的,因此需要解决在容器中运行应用程序遇到的一些问题.首先,当容器崩溃时,kubelet将重新启动容器,但是写入容器的文件将会丢失,容器将会以镜像的初始状态重新开始:第二,在 ...

  6. Rpm Creating Subpackages

    转自:http://ftp.rpm.org/max-rpm/s1-rpm-subpack-spec-file-changes.html Spec File Changes For Subpackage ...

  7. js 将图片转换为 base64

    var img = document.getElementById('s_lg_img'); function getBase64Image(img) { var canvas = document. ...

  8. 【JZOJ5738】【20190706】锁屏杀

    题目 $n \le 2000 $ 题解 \(B\)的数字可以对1440取模,对三个图分别进行\(dp\)即可 时间复杂度\(O(n\times 1440 \times 10)\) Code #incl ...

  9. js中a + 1 < a等于true,(a ==1 && a== 2 && a==3) 等于 true如何实现

    先说a + 1 < a const a = { i: 1, valueOf: () => { if (a.i === 1) { return a.i++; } return a.i+2; ...

  10. ZROI 暑期高端峰会 A班 Day1 组合计数

    AGC036F Square Constriants 一定有 \(l_i<p_i\le r_i\). 考虑朴素容斥,枚举每个数是 \(\le l_i\) 还是 \(\le r_i\).对于 \( ...