请设计一个算法能够完成两个用字符串存储的整数进行相加操作,对非法的输入则返回error
输入描述:
输入为一行,包含两个字符串,字符串的长度在[1,100]。
输出描述:
输出为一行。合法情况输出相加结果,非法情况输出error
示例1
输入
123 123
abd 123
输出
246
Error
其实后面处理len1,len2的大小时可以再写一个处理函数,交换传入的次序就行
比如,len1>=len2 传deal(arr,brr);
len1<len2 传deal(brr,arr
);
package MeiTuan2017;
import java.util.*;
public class Main_4{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String str1=in.next();
String str2=in.next();
System.out.println(AddStr(str1,str2));
}
public static String AddStr(String str1,String str2){
int len1=str1.length();
int len2=str2.length();
int[] arr=new int[len1];
for(int i=0;i<len1;i++){
if(str1.charAt(i)<='9'&&'0'<=str1.charAt(i)) {
arr[i]=str1.charAt(i)-'0';
}else{
return "error";
}
}
int[] brr=new int[len2];
for(int i=0;i<len2;i++){
if(str2.charAt(i)<='9'&&'0'<=str2.charAt(i)) {
brr[i]=str2.charAt(i)-'0';
}else{
return "error";
}
}
String str="";
int p=len1;
int q=len2;
if(p>=q) {
StringBuffer sb=new StringBuffer();
int flag=0;
for(int i=q-1,j=p-1;i>=0&&j>=0;i--,j--){
int num=brr[i]+arr[j]+flag;
if(num>=10){
flag=1;
}else flag=0;
arr[j]=num%10;
sb.append(arr[j]);
}
for(int k=p-q-1;k>=0;k--){
int num=arr[k]+flag;
if(num>=10){
flag=1;
}else flag=0;
arr[k]=num%10;
sb.append(arr[k]);
}
if(flag==1) {
sb.append(1);
str= sb.reverse().toString();
}else {
str=sb.reverse().toString();
}
}
else if(p<q) {
int flag=0;
StringBuffer sb=new StringBuffer();
for(int i=p-1,j=q-1;i>=0&&j>=0;i--,j--){
int num=brr[j]+arr[i]+flag;
if(num>=10){
flag=1;
}else flag=0;
brr[j]=num%10;
sb.append(brr[j]);
}
for(int k=q-p-1;k>=0;k--){
int num=brr[k]+flag;
if(num>=10){
flag=1;
}else flag=0;
brr[k]=num%10;
sb.append(brr[k]);
}
if(flag==1) {
sb.append(1);
str= sb.reverse().toString();
}else {
str=sb.reverse().toString();
}
}
return str;
}
}
import java.util.*;
public class Main_4{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String str1=in.next();
String str2=in.next();
System.out.println(AddStr(str1,str2));
}
public static String AddStr(String str1,String str2){
int len1=str1.length();
int len2=str2.length();
int[] arr=new int[len1];
for(int i=0;i<len1;i++){
if(str1.charAt(i)<='9'&&'0'<=str1.charAt(i)) {
arr[i]=str1.charAt(i)-'0';
}else{
return "error";
}
}
int[] brr=new int[len2];
for(int i=0;i<len2;i++){
if(str2.charAt(i)<='9'&&'0'<=str2.charAt(i)) {
brr[i]=str2.charAt(i)-'0';
}else{
return "error";
}
}
String str="";
int p=len1;
int q=len2;
if(p>=q) {
StringBuffer sb=new StringBuffer();
int flag=0;
for(int i=q-1,j=p-1;i>=0&&j>=0;i--,j--){
int num=brr[i]+arr[j]+flag;
if(num>=10){
flag=1;
}else flag=0;
arr[j]=num%10;
sb.append(arr[j]);
}
for(int k=p-q-1;k>=0;k--){
int num=arr[k]+flag;
if(num>=10){
flag=1;
}else flag=0;
arr[k]=num%10;
sb.append(arr[k]);
}
if(flag==1) {
sb.append(1);
str= sb.reverse().toString();
}else {
str=sb.reverse().toString();
}
}
else if(p<q) {
int flag=0;
StringBuffer sb=new StringBuffer();
for(int i=p-1,j=q-1;i>=0&&j>=0;i--,j--){
int num=brr[j]+arr[i]+flag;
if(num>=10){
flag=1;
}else flag=0;
brr[j]=num%10;
sb.append(brr[j]);
}
for(int k=q-p-1;k>=0;k--){
int num=brr[k]+flag;
if(num>=10){
flag=1;
}else flag=0;
brr[k]=num%10;
sb.append(brr[k]);
}
if(flag==1) {
sb.append(1);
str= sb.reverse().toString();
}else {
str=sb.reverse().toString();
}
}
return str;
}
}