你的弟弟刚做完了“100以内数的加减法”这部分的作业,
请你帮他检查一下。每道题目(包括弟弟的答案)的格式为a+b=c或者a-b=c,
其中a和b是作业中给出的,均为不超过100的非负整数;
c是弟弟算出的答案,可能是不超过200的非负整数,也可能是单个字符"?",表示他不会算。
输入
输入文件包含不超过100行,以文件结束符结尾。每行包含一道题目,格式保证符合上述规定,
且不包含任何空白字符。输入的所有整数均不含前导0。
输出
输出仅一行,包含一个非负整数,即弟弟答对的题目数量。
解析:
该题的主要意思其实就是让你去判断运算是否正确,可是我们还要很多次的输入,所以我们可以考虑用Scanner中
的hasNext()方法,该方法结束的标志是ctrl+z,既然是让我们判断运算的正确与否,那我们可以把a+b=c给用String
中的方法来解决,首先先用indexOf()来找到“+”或者是“-”的位置,接下来我们可以用substring()来把a,b
分别给截取出来,c也是同理,然后通过Integer.parseInt()来把字符串转化为整型,接下来先看c是否为“?”,
如果c="?"直接给它赋值一个大的负数,然后再来判断a,b,c之间的关系即可。
代码如下:
import java.util.Scanner;
public class L1073 {
public static void main(String[] args) {
Scanner m=new Scanner(System.in);
int count=0;
while(m.hasNext())
{
String str=m.next();
int number=str.indexOf("+");
if(number==-1)
number=str.indexOf("-");
String a=str.substring(0, number);
int num=str.indexOf("=");
String b=str.substring(number+1,num);
String c=str.substring(num+1);
int a1=Integer.parseInt(a);
int b1=Integer.parseInt(b);
int c1;
if(!c.endsWith("?"))
c1=Integer.parseInt(c);
else
c1=-2000;
char s=str.charAt(number);
if(s=='+'&&c1==a1+b1)
count++;
else if(s=='-'&&c1==a1-b1)
count++;
}
System.out.println(count);
}
}
有什么问题的话就在下方评论。0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复