题目
- 输入商品名称和商品价格,要求打印效果示例, 使用前面学习的方法完成:
- 商品名 商品价格
- 网球拍 123,564.59
要求:价格的小数点前面每三位用逗号隔开。
代码展示
package com.liquor.exam;
import java.text.NumberFormat;
import java.util.Scanner;
public class Exam5 {
public static void main(String[] args) {
/*
核心.
分析
1. double price = 123564.59
2. 转成String => StringBuffer
3. 使用它的 insert
4. 先找到 . 的 前三位, 插入
5. (4) 是循环过程
6. 走代码
*/
//1.输入一个数。
Scanner scanner = new Scanner(System.in);
System.out.println("请输入商品名称和商品价格(空格分开):");
String name = scanner.next();
double price = scanner.nextDouble();
//2.Double => 转成String => StringBuffer
//String.valueOf():用于将其他数据类型转成字符串型。
StringBuffer stringBuffer = new StringBuffer(formatDouble(price)); //new StringBuffer(String.valueOf(price));
//5. (4) 是循环过程
for (int i = stringBuffer.lastIndexOf(".") - 3; i > 0; i -= 3) {
//3.使用它的 insert
// StringBuffer.insert():向指定位置插入字符。
// 4. 先找到 . 的 前三位, 插入
stringBuffer.insert(i, ",");
}
System.out.println("商品名称\t商品价格");
System.out.println(name + "\t" +stringBuffer);
}
private static String formatDouble(double d) {
//NumberFormat.getInstance():返回指定语言环境的数字格式
NumberFormat nf = NumberFormat.getInstance();
//设置保留多少位小数
nf.setMaximumFractionDigits(20);
// 取消科学计数法
nf.setGroupingUsed(false);
//返回结果
//formatDouble.format():用于将double型转成字符串。
return nf.format(d);
}
}