[1001]A+B Format (20 分)
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 −10
6
≤a,b≤10
6
. 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.因为不知道System.out.printf()有可以用逗号格式化1000以上数字的功能,便用字符串处理来自己写了一个,很是麻烦。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String string = scanner.nextLine();
scanner.close();
StringBuilder input = new StringBuilder(string);
int spaceAt = input.indexOf(" ");
String a = input.substring(0, spaceAt);
String b = input.substring(spaceAt + 1, input.length());
Integer aInteger = Integer.parseInt(a);
Integer bInteger = Integer.parseInt(b);
Integer cInteger = aInteger + bInteger;
boolean nag = false;
if (cInteger < 0) {
nag = true;
}
StringBuilder cString = new StringBuilder(cInteger.toString());
int num = 0;
int len = cString.length();
if (cString.length() > 3) {
if (!nag) {
for (int i = 0 ; i <cString.length(); i++) {
num++;
if (num % 3 == 0 && num < len) {
String right = "," + cString.substring(cString.length()-i-1);
cString.delete(cString.length()-i-1, cString.length());
cString.append(right);
i++;
}
}
} else {
for (int i = 0; i<cString.length(); i++) {
num++;
if (num % 3 == 0 && num < len - 1) {
String right = "," + cString.substring(cString.length()-i-1);
cString.delete(cString.length()-i-1, cString.length());
cString.append(right);
i++;
}
}
}
}
System.out.println(cString);
}
}
2.后来看别人写的才知道用格式化输出,几行代码就搞定了:
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.printf("%,d", a+b);
}
3.于是找到了System.out.printf()的格式化的形式: