Calculate a+b and output the sum in standard format – that is, the digits must be separated into groups of three by commas (unless there are less than four digits).
Input Specification:
Each input file contains one test case. Each case contains a pair of integers a and b where −1000000 ≤a,b≤10000000 . The numbers are separated by a space.
Output Specification:
For each test case, you should output the sum of a and b in one line. The sum must be written in the standard format.
Sample Input:
-1000000 9
Sample Output:
-999,991
题意大致如下:
给定两个整数,你需要将他们求和并按照一定的格式将它们输出(即从尾到首每三个数字插入一个“,”)。
思路如下
1、对于输入的整数进行求和
2、对于整数和的特例(无需格式化的整数),直接输出
3、进行格式化操作
- 将整数和视作字符串进行遍历,并在特定的位置插入“,”
- 使用stringbuffer对各位数字进行连接
- 要注意的是,整数和为负值的,要将负号记录,单独处理,否则会导致正数和负数的插入位置的不一致
package no1001.a_plus_b_format;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main
{
public static void main(String[] args) throws IOException
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line = in.readLine();
String[] strs = line.split(" ");
int a = Integer.parseInt(strs[0]);
int b = Integer.parseInt(strs[1]);
in.close();
Integer sum = a+b;
//对于特例无需格式化处理
if(sum<1000 && sum>-1000)
System.out.println(sum);
else
System.out.println(format(sum));
}
private static String format(Integer num)
{
//使用stringbuffer对每个数字及逗号进行连接
StringBuffer sb = new StringBuffer();
String str = num.toString();
boolean isNegative = (num<0);
if(isNegative)
{
str = str.substring(1);
sb.append("-");
}
int length = str.length();
for(int i = 0;i<length;i++)
{
//对于特定的位置加入“,”,注意末尾无论如何不能加“,”
if((length-1-i)%3 == 0&&i!=length-1)
{
sb.append(str.charAt(i));
sb.append(",");
}
else
sb.append(str.charAt(i));
}
return sb.toString();
}
}