小学数学
Time Limit: 1000MS Memory Limit: 65536KB
Problem Description
今年中秋节,大宝哥带着一盒月饼去看望小学数学老师。碰巧数学老师在指导他的学生“100以内的加减法”,由于老师要指导很多个小朋友,所以经常会忙不过来,于是老师便请大宝帮忙检查下小朋友们的作业情况,并统计出每个小朋友做对了几道题。其中每道算术题的格式为a+b=c、a-b=c、a+b=?、a-b=? 中的一种,最后的问号表示这个小朋友不会计算这道题。在检查作业的过程中,大宝发现他经常算错题目而且会数错个数。所以他想请你帮忙写个程序来统计小朋友做对题目的个数。
Input
输入包含多组测试数据,每组有一行,每行为一道加法或减法算式,数据格式保证符合上述格式,不包含任何其他字符且所有整数均不包含前导0。其中(0≤a,b≤100,0≤c≤200)。
Output
输出只有一行,包含一个整数,即等式成立的个数。
Example Input
2+2=33-1=26+7=?99-0=?
Example Output
1
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s = new Scanner(System.in);
int num = 0;
while(s.hasNext())
{
String st = s.nextLine();
int a = st.indexOf("+");
int p = st.indexOf("-");
if(a>=0)
{
String ss= st.substring(0,a);
int b = st.indexOf("=");
String ssr = st.substring(a+1,b);
String s1 = st.substring(b+1,st.length());
if(!s1.equals("?"))
{
int c = Integer.parseInt(ss);
int d = Integer.parseInt(ssr);
int e = Integer.parseInt(s1);
if(c+d==e)
{
num++;
}
}
}
else if(p>=0)
{
String ss= st.substring(0,p);
int b = st.indexOf("=");
String ssr = st.substring(p+1,b);
String s1 = st.substring(b+1,st.length());
if(!s1.equals("?"))
{
int c = Integer.parseInt(ss);
int d = Integer.parseInt(ssr);
int e = Integer.parseInt(s1);
if(c-d==e)
{
num++;
}
}
}
}
System.out.println(num);
s.close();
}
}
再来个java里调用js,代码功能比上面的范围要广,能判断加减乘除,多项代数式,但是有时输出,有时不输出,翻水水。
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
ScriptEngineManager manager = new ScriptEngineManager();
int count=0;
while(in.hasNext()){
String str=in.nextLine();
String s1=str.substring(0, str.indexOf("="));
String s2=str.substring(str.indexOf("=")+1,str.length());
ScriptEngine engine = manager.getEngineByName("JavaScript");
try{
Object result = engine.eval(s1);
if(s2.equals(result.toString())==true)count++;
}
catch(ScriptException e){
e.printStackTrace();
}
}
System.out.println(count);
in.close();
}
}