输入输出格式练习

题目描述



输入

按格式读入一个3位的整数、一个实数、一个字符。

输出

按格式输出一个整数占8位左对齐、一个实数(位数不多于8位,保留一位小数后)占八位右对齐、一个字符,并用|隔开

样例输入

123456.789a

样例输出

123 | 456.8|a

import java.util.Scanner;
public class Main {
    static Scanner in =new Scanner(System.in);
	public static void main(String[] args) {
		while(in.hasNext()){
			String s=in.next();
		    System.out.print(s.substring(0,3)+"     "+"|");
			int pos=0;
			char[] c=s.substring(3,s.length()-1).toCharArray();
			for (int i = 0; i < c.length; i++) {
				if(c[i]=='.'){
					pos=i;
					break;
				}
			}
			for (int i = c.length-1; i>pos-1; i--) {
				if(c[i]>='5'||c[i]=='&'){
					c[i-1]=(char) (c[i-1]-'0'+49);
					if(c[i-1]==':')//即当进位以后为10,根据ASCII码表为“:”对应的值,
						c[i-1]='&';	//设置标志来判断,主要考虑全是9的情况!			   
				}
			}
			if(c[pos+1]=='&'){//对于1.999类似情况进行处理!
				c[pos-1]=(char) (c[pos-1]-'0'+49);
				c[pos+1]='0';
				}
			String s1=new String(c);//字符数组转化为字符串
			//取子串拼接转化为浮点数以便控制8位的格式
			String s2=s1.substring(0,pos)+"."+s1.charAt(pos+1);
			double k=Double.parseDouble(s2);
			System.out.printf("%8.1f",k);
			System.out.println("|"+s.charAt(s.length()-1));
		}

	}

}
反思:哇,感觉自己每道题总是犯低级错误,这道题我进位变成10 以后我竟然直接认为是‘0’,你以为数学呢,根据ASCII码表,加上1即原来是9以后的ASCII码值为“:”的值啊,真是的,好气哦,幸好自己查了一下表,改出来啦,开心,这道题的坑点在于浮点数部分进位是从最后一位一点一点往前进位的,特别注意1.999这种情况的处理!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值