PAT 1001 A+B Format (20 分) Java题解
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 −106≤a,b≤106. 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
结尾无空行
代码如下:
package advanced;
import java.util.Scanner;
/**
* 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).
*/
public class Question1001 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = a + b;
int temp = Math.abs(c);
if (c < 0){
System.out.print("-");
}
String answer = String.valueOf(temp);
for (int i = 0; i < answer.length(); i++) {
System.out.print(answer.charAt(i));
if ((i + 1) % 3 == answer.length() % 3 && i != answer.length() - 1){
System.out.print(",");
}
}
}
}
思路
step1:将计算结果转成字符串
step2:将字符串遍历输出
在输出时,如果索引 i 的值满足(i + 1) % 3 == answer.length() % 3 && i != answer.length() - 1
则输出一个“,”号,第一个条件(i + 1) % 3 == answer.length() % 3
保证了“,”号是每个三个输出,又因为每个三的逗号输出时从末尾数,每三个输出逗号,为了保证每次位移程度都相同,所以等式左边应该是answer.length() % 3