!!!!!!!!!!!!!!!理清思路 然后一步步写
问题描述
小蓝在黑板上写了一个形如 AopB=C 的算式,其中 A、B、C 都是非负整数,op 是 +、-、*、/(整除)四种运算之一。不过 A、op、B、C 这四部分有一部分被不小心的同学擦掉了。
给出这个不完整的算式,其中被擦掉的部分(被擦掉的部分是被完整的擦掉,不会出现留下若干位数字的情况)用 ? 代替。请你输出被擦掉的部分。
输入描述
输入只有一行,包含一个字符串代表如上文所述的不完整的算式。
输出描述
如果被擦掉的部分是 A、B、C 之一,请输出一个整数代表答案。如果被擦掉的部分是 op,请输出+、-、*、/四个字符之一代表答案。
样例输入1
1+?=2
样例输出1
1
样例输入2
10?3=3
样例输出2
/
代码示例
java
import java.util.Scanner;
public class Main{
public static void main(String[]args)
{
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
if(s.contains("+")||s.contains("-")||s.contains("*")||s.contains("/"))//当字符串中有+-*/负号,即缺ABC
{
String s1[]=s.split("=");//从=字符将整个字符串分成两个字符串,"A op B"是s1[0],"C"是s1[1];
String s2=s1[0];//即s2="A op B"
if(s1[1].equals("?"))//即C被?代替了
{
int op=0;
for(int i=0;i<s2.length();i++) {
if(s2.charAt(i)<'0'||s2.charAt(i)>'9')//检查运算符所在位置的索引
{
op=i;
break;
}
}
int a=Integer.parseInt(s2.substring(0,op));
int b=Integer.parseInt(s2.substring(op+1,s2.length()));
if(s.contains("+"))System.out.println(a+b);
if(s.contains("-"))System.out.println(a-b);
if(s.contains("*"))System.out.println(a*b);
if(s.contains("/"))System.out.println(a/b);
}
else {//A或B被替代了
int c=Integer.parseInt(s1[1]);
int op=0;
for(int i=0;i<s2.length();i++)
{
if(s2.charAt(i)=='+'||s2.charAt(i)=='-'||s2.charAt(i)=='*'||s2.charAt(i)=='/')//检查运算符所在位置的索引
{
op=i;
break;
}
}
int a=0;
if(s2.charAt(op-1)>='0'&&s2.charAt(op-1)<='9')//有A缺B
{
a=Integer.parseInt(s2.substring(0,op));
if(s.contains("/"))System.out.println(a/c);
if(s.contains("-"))System.out.println(a-c);
}else {//有B缺A
a=Integer.parseInt(s2.substring(op+1,s2.length()));
if(s.contains("/"))System.out.println(a*c);
if(s.contains("-"))System.out.println(a+c);
}
if(s.contains("+"))System.out.println(c-a);
if(s.contains("*"))System.out.println(c/a);
}
}else {//缺运算符
String s1[]=s.split("=");//从=字符将整个字符串分成两个字符串
int c=Integer.parseInt(s1[1]);//转换成整数C
String s2=s1[0];
int op=0;
for(int i=0;i<s2.length();i++)
{
if(s2.charAt(i)<'0'||s2.charAt(i)>'9')//检查运算符所在位置的索引
{
op=i;
break;
}
}
int a=Integer.parseInt(s2.substring(0,op));//转换成整数A
int b=Integer.parseInt(s2.substring(op+1,s2.length()));//转换成整数B
if(a+b==c)System.out.println("+");
if(a-b==c)System.out.println("-");
if(a*b==c)System.out.println("*");
if(a/b==c)System.out.println("/");
}
}
}