首页 > 代码库 > IO-04. 混合类型数据格式化输入
IO-04. 混合类型数据格式化输入
本题要求编写程序,顺序读入浮点数1、整数、字符、浮点数2,再按照字符、整数、浮点数1、浮点数2的顺序输出。
输入格式:
输入在一行中顺序给出浮点数1、整数、字符、浮点数2,其间以1个空格分隔。
输出格式:
在一行中按照字符、整数、浮点数1、浮点数2的顺序输出,其中浮点数保留小数点后2位。
输入样例:2.12 88 c 4.7输出样例:
c 88 2.12 4.70
/*
我自己写的没通过,后来发现是没读懂题意!要求是“输入一行”,之间加1个空格,我的是一个一个的输入!
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); float a = input.nextFloat(); int b = input.nextInt(); String c = input.next(); float d = input.nextFloat(); System.out.printf("%s %d %.2f %.2f",c,b,a,d); }}*/import java.text.DecimalFormat;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); String input = s.nextLine(); if(input.split(" ").length == 4) { //输入在一行中顺序给出浮点数1、整数、字符、浮点数2 DecimalFormat fnum = new DecimalFormat("##0.00"); float aa = Float.parseFloat(input.split(" ")[0]); String a = fnum.format(aa); int b = Integer.parseInt(input.split(" ")[1]); String c = input.split(" ")[2]; float dd = Float.parseFloat(input.split(" ")[3]); String d = fnum.format(dd); //在一行中按照字符、整数、浮点数1、浮点数2的顺序输出,其中浮点数保留小数点后2位 System.out.print(c + " " + b + " " + a + " " + d); } } }
知识扩展:
1、Split方法:将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
stringObj.split([separator,[limit]])
参数
stringObj
必选项。要被分解的 String 对象或文字。该对象不会被 split 方法修改。
separator
可选项。字符串或 正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。
limit
可选项。该值用来限制返回数组中的元素个数。
说明:
split 方法的结果是一个字符串数组,在 stingObj 中每个出现 separator 的位置都要进行分解
所以正常的写法是这样的:
1)、如果用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
2)、如果用“|”作为分隔的话,必须是如下写法:String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");
“.”和“|”都是转义字符,必须得加"\\";
3)、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“a=1 and b =2 or c=3”,把三个都分隔出来,可以用String.split("and|or");
2、DecimalFormat类也是Format的一个子类,主要作用是格式化数字。
当然,在格式化数字时要比直接使用NumberFormat更加方便,因为可以直接指定按用户自定义的方式进行格式化操作,与SimpleDateFormat类似。
如果要进行自定义格式化操作,则必须指定格式化操作的模板,此模板如表下所示:
序号 | 标 记 | 位 置 | 描 述 |
1 | 0 | 数字 | 代表阿拉伯数字,每一个0表示一位阿拉伯数字, 如果该位不存在则显示0 |
2 | # | 数字 | 代表阿拉伯数字,每一个#表示一位阿拉伯数字, 如果该位不存在则不显示 |
3 | . | 数字 | 小数点分隔符或货币的小数分隔符 |
4 | - | 数字 | 代表负号 |
5 | , | 数字 | 分组分隔符 |
6 | E | 数字 | 分隔科学计数法中的尾数和指数 |
7 | ; | 子模式边界 | 分隔正数和负数子模式 |
8 | % | 前缀或后缀 | 数字乘以100并显示为百分数 |
9 | \u2030 | 前缀或后缀 | 乘以1000并显示为千分数 |
10 | ¤ \u00A4 | 前缀或后缀 | 货币记号,由货币号替换。如果两个同时出现, 则用国际货币符号替换;如果出现在某个模式中 ,则使用货币小数分隔符,而不使用小数分隔符 |
11 | , | 前缀或后缀 | 用于在前缀或后缀中为特殊字符加引号,例如 "‘#‘#" 将 123 格式化为 "#123"。要创建单引 号本身,则连续使用两个单引号,例如"# o‘‘clock" |
下面通过实例代码说明以上格式化模板的使用。
范例:格式化数字
package org.lxh.demo11.numberdemo; import java.text.DecimalFormat; class FormatDemo{ public void format1(String pattern,double value){ DecimalFormat df = null ; // 声明一个DecimalFormat对象 df = new DecimalFormat(pattern) ; // 实例化对象 String str = df.format(value) ; // 格式化数字 System.out.println("使用" + pattern + "格式化数字"+value+":" + str); } } public class NumberFormatDemo02 { public static void main(String[] args) { FormatDemo demo = new FormatDemo() ; demo.format1("###,###.###", 111222.34567); demo.format1("000,000.000", 11222.34567); demo.format1("###,###.###¥", 111222.34567); demo.format1("000,000.000¥", 11222.34567); demo.format1("##.###%", 0.345678); // 使用百分数形式 demo.format1("00.###%", 0.0345678); // 使用百分数形式 demo.format1("###.###\u2030", 0.345678); // 使用千分数形式 } }
//程序运行结果:使用###,###.###格式化数字111222.34567:111,222.346 使用000,000.000格式化数字11222.34567:011,222.346 使用###,###.###¥格式化数字111222.34567:111,222.346¥ 使用000,000.000¥格式化数字11222.34567:011,222.346¥ 使用##.###%格式化数字0.345678:34.568% 使用00.###%格式化数字0.0345678:03.457% 使用###.###‰格式化数字0.345678:345.678‰
IO-04. 混合类型数据格式化输入
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。