Cho em hỏi reverseNum1.charAt(i) - ‘0’ sao lại phải trừ cho 0. Em có đoạn code dưới đây mọi người xem và chỉ giáo em với.
package buoi5.VuMinhLam;
import java.util.Scanner;
public class Bai1 {
private static String reversesNum1, reversesNum2, sumElemrnt, number1, number2;
private static int max;
private static Scanner scanner = new Scanner(System.in);
private static String regularExpression = "\\d{1,1000000}";
public static void main(String[] args) {
inputNum();
}
private static void inputNum() {
number1 = checkIsNumber1(number1);
number2 = checkIsNumber2(number2);
reversesNum1 = reversesNum(number1);
reversesNum2 = reversesNum(number2);
int lentNum1 = number1.length();
int lentNum2 = number2.length();
max = Math.max(lentNum1, lentNum2);
/**
* compare number 1 vs max (or number 2 vs max) to find length number smaller then + '0'
* when 2 number have equal length. We sum 2 number
**/
if (max > lentNum1) {
for (int i = lentNum1; i < max; i++) {
reversesNum1 += '0';
}
}
if (max > lentNum2) {
for (int i = lentNum2; i < max; i++) {
reversesNum2 += '0';
}
}
// sum 2 number
System.out.println(reversesNum(sumNum(sumElemrnt)));
}
// The first number must enter the number
private static String checkIsNumber1(String number1) {
boolean checkNum1;
String number;
do {
System.out.println("The first number: ");
number = scanner.next();
checkNum1 = number.matches(regularExpression);
if (!checkNum1) System.out.println("You must enter the number !");
} while (!checkNum1);
number.lines();
return number;
}
// The second number must enter the number
private static String checkIsNumber2(String number2) {
boolean checkNumber2;
String number;
do {
System.out.println("The second number: ");
number = scanner.next();
checkNumber2 = number.matches(regularExpression);
if (!checkNumber2) System.out.println("You must enter the number");
} while (!checkNumber2);
return number;
}
// Sum number 1 + number 2
private static String sumNum(String sum) {
int recordedNum = 0;
int sum1;
sumElemrnt = "";
for (int i = 0; i < max; i++) {
sum1 = reversesNum1.charAt(i) - '0' + reversesNum2.charAt(i) - '0' + recordedNum;
sumElemrnt += sum1 % 10;
recordedNum = sum1 / 10;
if (recordedNum == 1) {
sum1 += 1;
}
}
return sumElemrnt;
}
// reverses the number to calculate the number from left to right
private static String reversesNum(String numberStr) {
int length1 = numberStr.length();
String s = "";
for (int i = 0; i < length1; i++) {
s += numberStr.charAt(numberStr.length() - 1 - i); // the number is reversed
}
return s;
}
}