L1-008 求整数段和
给定两个整数A和B,输出从A到B的所有整数以及这些数的和。
输入格式:
输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。
输出格式:
首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。
输入样例:
-3 8
输出样例:
-3 -2 -1 0 1
2 3 4 5 6
7 8
Sum = 30
实现代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
try {
String[] strs = bf.readLine().split(" "); //输入
String str = "";
int m = Integer.parseInt(strs[0]),
n = Integer.parseInt(strs[1]), // 将输入的字符串, 转换成int类型,方便计算
sum = 0,count = 0; // sum 计算和, count起到一个控制作用
for (int i=m ; i<=n ;i++){
sum += i; //求和
str += join(str,i); //拼接字符串 完成单个数字的字符串格式
count++;
if (count == 5){
count = 0;
str += "\n";
}
}
if (count == 0){
str = str.substring(0,str.length()-2);
}
System.out.println(str);
System.out.println("Sum = " + sum);
} catch (IOException e) {
e.printStackTrace();
}
}
public static String join(String strs, int reg) {
// 拼接
String[] regStr = (""+reg).split("");
int len = regStr.length;
String[] forStr = new String[5];
for (int i = 4; i >= 0; i--) {
if (len>0){
forStr[i] = regStr[--len];
}else {
forStr[i] = " ";
}
}
strs = join(forStr ,"");
return strs;
}
public static String join(String[] strs, String reg) {
String str = "";
for(int i = 0; i < strs.length; ++i) {
str = str + strs[i];
if (i != strs.length - 1) {
str = str + reg;
}
}
return str;
}
}