请设计一个算法能够完成两个用字符串存储的整数进行相加操作,对非法的输入则返回error
输入描述:
输入为一行,包含两个字符串,字符串的长度在[1,100]。
输出描述:
输出为一行。合法情况输出相加结果,非法情况输出error
示例1
输入
123 123
abd 123
输出
246
Error
Algrithom:
input: String in=String A+" "+String B
output: String out
begin:
int res=0;// 进位
for i=A.length-1,j=B.length-1;i>=0 && j>=0;i--,j--
{
if(A[i]>=0 && A[i]<=9 && B[j]>=0 && B[j]<=9)
if(A[i]+B[j]+res>=10)
res=1;
else
res=0;
out=String((A[i]+B[j]+res)%10)+out;
else
print("error");
break;
}
if (res==1)
print(1+out);
else
print(out);
end
import java.util.Scanner;
import java.util.Stack;
public class Main{
public static void main(String[] args){
Scanner s=new Scanner(System.in);
String data=s.nextLine();
String temp[]=data.split(" ", 2);
String out="";
int res=0;
for(int i=temp[0].length()-1,j=temp[1].length()-1;i>=0 && j>=0;i--,j-- ){
if((temp[0].charAt(i)>='0' && temp[0].charAt(i)<='9') && (temp[1].charAt(j)>='0' && temp[1].charAt(j)<='9') ){
int a=Integer.parseInt(temp[0].substring(i, i+1));
int b=Integer.parseInt(temp[1].substring(j, j+1));
int result=a+b+res;
if(result>=10){
res=1;
}else{
res=0;
}
out=Integer.toString(result%10)+out;
}else{
System.out.println("error");
break;
}
}
if(res==1){
System.out.print("1"+out);
}else{
System.out.print(out);
}
}
}