问题
有加法运算器程序,其规则为:程序依次出10道加法题目,由用户输入题目的答案。用户每答完一道题,由系统提示结果:答错了或者答对了。10道题目答完之后,系统计算得分并输出。如果用户希望提前结束,则可以输入-1提前退出。
本案例要求使用交互的方式实现此游戏,交互过程为:
1.程序开始,即出现一道加法题(两个加数均为0到99之间的随机整数),并提示用户输入该题目的答案(输入-1则会提前退出程序)。交互过程如图所示:
2.用户录入后,程序进行判断:如果用户录入的答案错误,则提示"Error!";如果答案正确,则提示"Correct!"。然后给出下一道题目,并提醒用户继续答题。用户答完10道题目后,系统给出用户的得分并显示(每道题目10分),程序结束。交互过程如图所示:
3.如果用户录入-1,则表示希望提前退出程序,系统将提示用户的分数,且程序结束。交互过程如图所示:
方案
此案例中,需要使用for循环产生10道加法题目。
在每次循环中,需要产生两个0到99之间的随机整数,作为加法题目的两个加数,并计算出正确答案;然后,输出题目,并提示用户进行答题,从而得到用户从界面所录入的数字。
得到用户的录入后,进行判断:如果用户录入的为-1,则需要提前退出循环;如果用户录入的答案错误,则提示"Error !",并继续下一次答题;如果用户录入的答案正确,则提示"Correct!",继续下一次答题。
循环结束后,计算用户的得分并输出,程序结束。注:用户得分的规则是,每答对一题,得10分,满分为100分。
程序的流程如图所示:
步骤
实现此案例需要按照如下步骤进行。
步骤一:定义类及main方法
首先定义一个名为AdditionTest的类,并在类中添加Java应用程序的主方法main,代码如下所示:
public class AdditionTest{
public static void main(String[] args){
}
}
步骤二:准备
在main方法中,输出程序即将开始的提示信息,并实例化Scanner类,用于准备接收用户从控制台输入的数字,然后,声明变量score用于记载用户的得分。代码如下所示:
import java.util.Scanner;
public class AdditionTest{
public static void main(String[] args){
System.out.println("将开始10次加法测试...");
Scanner scanner=new Scanner(System.in);
//用于记载分数
int score=0;
}
}
注意:此步骤中,需要导入java.util包下的Scanner类。
步骤三:构建循环
使用for语句,构建10次循环。
在循环中,使用Math类的random方法返回两个0到1之间的随机数(包含0,不包含1),然后将所产生的数值乘以100,并取其整数部分,则可以生成两个0到99之间的随机整数(包含0,也包含99),表示加法题目中的两个加数。
计算加法运算的结果,并输出题目,代码如下:
import java.util.Scanner;
public class AdditionTest{
public static void main(String[] args){
System.out.println("将开始10次加法测试...");
Scanner scanner=new Scanner(System.in);
//用于记载分数
int score=0;
//构建10次循环
for(int i=1;i<=10;i++){
//随机生成两个加数
int a=(int)(Math.random()*100);
int b=(int)(Math.random()*100);
int result=a+b;
//输出需要计算的加法表达式
System.out.println("("+i+")."+a+"+"+b+"=?");
System.out.println("请输入答案(输入-1退出):");
}
}
}
步骤四:判断录入
得到用户的录入后,进行判断:如果用户录入的为-1,则需要提前退出循环;如果用户录入的答案错误,则提示"Error!",并继续下一次答题;如果用户录入的答案正确,则提示"Correct!",并计算用户的得分,然后继续下一次的答题。用户得分的规则是,每对一题,得10分(满分为100分)。
代码如下所示:
import java.util.Scanner;
public class AdditionTest{
public static void main(String[] args){
System.out.println("将开始10次加法测试...");
Scanner scanner=new Scanner(System.in);
//用于记载分数
int score=0;
//构建10次循环
for(int i=1;i<=10;i++){
//随机生成两个加数
int a=(int)(Math.random()*100);
int b=(int)(Math.random()*100);
int result=a+b;
//输出需要计算的加法表达式
System.out.println("("+i+")."+a+"+"+b+"=?");
System.out.println("请输入答案(输入-1退出):");
//读入结果
int answer=scanner.nextInt();
//判断对错
if(answer==-1){
break;
}else if(answer!=result){
System.out.println("Error!");
continue;
}else{
score+=10;
System.out.println("Correct!");
}
}
}
}
步骤五:输出结果
最后,需要将scanner对象关闭,并输出结果,代码如下所示:
import java.util.Scanner;
public class AdditionTest{
public static void main(String[] args){
System.out.println("将开始10次加法测试...");
Scanner scanner=new Scanner(System.in);
//用于记载分数
int score=0;
//构建10次循环
for(int i=1;i<=10;i++){
//随机生成两个加数
int a=(int)(Math.random()*100);
int b=(int)(Math.random()*100);
int result=a+b;
//输出需要计算的加法表达式
System.out.println("("+i+")."+a+"+"+b+"=?");
System.out.println("请输入答案(输入-1退出):");
//读入结果
int answer=scanner.nextInt();
//判断对错
if(answer==-1){
break;
}else if(answer!=result){
System.out.println("Error!");
continue;
}else{
score+=10;
System.out.println("Correct!");
}
}
scanner.close();
System.out.println("此次检测结束,你的分数是:"+score);
}
}
学习网址:http://java.itkzhan.com/