天天看点

Java入门第28课——随机加法运算器

问题

        有加法运算器程序,其规则为:程序依次出10道加法题目,由用户输入题目的答案。用户每答完一道题,由系统提示结果:答错了或者答对了。10道题目答完之后,系统计算得分并输出。如果用户希望提前结束,则可以输入-1提前退出。

        本案例要求使用交互的方式实现此游戏,交互过程为:

        1.程序开始,即出现一道加法题(两个加数均为0到99之间的随机整数),并提示用户输入该题目的答案(输入-1则会提前退出程序)。交互过程如图所示:

Java入门第28课——随机加法运算器

        2.用户录入后,程序进行判断:如果用户录入的答案错误,则提示"Error!";如果答案正确,则提示"Correct!"。然后给出下一道题目,并提醒用户继续答题。用户答完10道题目后,系统给出用户的得分并显示(每道题目10分),程序结束。交互过程如图所示:

Java入门第28课——随机加法运算器

        3.如果用户录入-1,则表示希望提前退出程序,系统将提示用户的分数,且程序结束。交互过程如图所示:

Java入门第28课——随机加法运算器

方案

        此案例中,需要使用for循环产生10道加法题目。

        在每次循环中,需要产生两个0到99之间的随机整数,作为加法题目的两个加数,并计算出正确答案;然后,输出题目,并提示用户进行答题,从而得到用户从界面所录入的数字。

        得到用户的录入后,进行判断:如果用户录入的为-1,则需要提前退出循环;如果用户录入的答案错误,则提示"Error !",并继续下一次答题;如果用户录入的答案正确,则提示"Correct!",继续下一次答题。

        循环结束后,计算用户的得分并输出,程序结束。注:用户得分的规则是,每答对一题,得10分,满分为100分。

        程序的流程如图所示:

Java入门第28课——随机加法运算器

步骤

        实现此案例需要按照如下步骤进行。

步骤一:定义类及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/