Java 算数运算测试,猜数游戏

选题一

算术运算测试

题目要求

实现十道100以内加减法数学题,能根据题目计算出答案,与输入答案对比,判断做题是否正确,最后计算分数。(添加排行榜功能存放到文件)

使用Java知识

Java基本输入输入出、运算符、循环、选择分支。

package xiangmuyi;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class suanshuceshi {

    static ArrayList<Integer> al=new ArrayList<Integer> ();
    static Object[] counts;//排行榜数组
    

    public static void main(String[] args) {
        
        
        //1.设定初始分数和题量
        int count=0;//计算正确次数
    
        Random r =new Random();
        
        Scanner input = new Scanner(System.in);
        System.out.println("欢迎来到算术测试游戏!");


        //2.随机生成十道100以内加减法
        

            
        for(int i=1;i<=10;i++) {
            int num1=r.nextInt(100);    //随机生成两个100以内的数
            int num2=r.nextInt(100);    
            
            if(num1<num2){        //加法
                System.out.println("第"+i+"题:"+num1+"+"+num2+"=?");
                int answer=input.nextInt();
                
                if(answer==num1+num2){        //判断是否正确
                    count++;
                    System.out.println("恭喜你!答对了!");
                }else{
                    System.out.println("很遗憾,回答错误!");
                }
            }
            
            if(num1>num2){        //减法
                System.out.println("第"+i+"题:"+num1+"-"+num2+"=?");
                int answer=input.nextInt();
                
                if(answer==num1-num2){        //判断是否正确
                    count++;
                    System.out.println("恭喜你!答对了!");
                }else{
                    System.out.println("很遗憾,回答错误!");
                }
            }
            
        }
            System.out.println("您的最终得分为:"+count+"分");
            suanshuceshi.Ranking(count);    //录入成绩
        
        
        
        //3.将最终得分排行榜写进文件
        FileInputStream fos=null;
        InputStreamReader oss=null;    //初始化
        BufferedReader br=null;
        
        try {
            fos=new FileInputStream("c:\\排行表.txt");
            oss=new InputStreamReader(fos);        
            br=new BufferedReader(oss);            
            String count1=null;
            while((count1=br.readLine())!=null) {
                al.add(Integer.valueOf(count1));    //
                counts=al.toArray();
            }
        }catch(Exception e) {
            e.printStackTrace();
        }
    
        
        Arrays.sort(counts);
        for(int i=0;i<counts.length;i++) {
            if((int)counts[i]==count) {
                System.out.println("您的排名是第"+(counts.length-i)+"名");
            }
            }
        
    }
    public static void Ranking(int count) {
        FileWriter fw=null;
        BufferedWriter bw=null;
    
    
        try {    //try catch捕获异常
            //输入
            fw= new FileWriter("c:\\排行表.txt",true); //分数录入
            bw=new BufferedWriter(fw);
            String s=Integer.toString(count);
            bw.write(s);    //记录分数
            bw.write("\n");
            bw.flush();
            System.out.println("操作完毕!----");
            bw.close();
            }
            catch(IOException e) {
                e.printStackTrace();
            }
}
}
 

选题二

猜数游戏

题目要求

计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜到,给出所用时间和评语。保留用户测试成绩,做出成绩排行榜。排行榜存放到文件。

使用Java知识

循环、分支、变量、常用类等

package xiangmuyi;
import java.io.*;
import java.util.*;
public class Guessnum {
    
    
    private static String x;
    
    private static int starttime;
    
    private static int endingtime;
    private static Scanner sc;

    public static void main(String[] args){
        
            //1.初始化
        System.out.println("一起来玩猜数字游戏吧!");
        sc = new Scanner(System.in);
        System.out.println("请输入参与游戏人数:");
        int personNumber=sc.nextInt();
        Writer wr=null;              //输入流
        int guess;                   
        int[]count1=new int[personNumber]; //存放猜测次数
        
        
            //2.生成数字
        for(int j=0;j<personNumber;j++)
        {
            int number=(int)(Math.random()*100); //随机生成一个1-100间数字
            int count=0;          //猜测次数
            System.out.println("请输入数字");
            long starttime=System.currentTimeMillis();//开始时间
            
            
            //3.判断与提示
            do{
                guess=sc.nextInt();
                if(number<guess){
                    System.out.println("太大了,猜小一点吧");
                    count++;        //猜测次数+1
                    count1[j]+=1;        //猜测次数放进数组+1
                }
                else if(number>guess){
                    System.out.println("太小了,猜大一点吧");
                    count++;            //猜测次数+1        
                    count1[j]+=1;        //猜测次数放进数组+1
                }
                else{
                    count++;
                    count1[j]+=1;        //成功,+1结束
                    break;
                }
            }while(true);
                long endingtime=System.currentTimeMillis();//结束时间
                System.out.println("恭喜你!猜对了!这个数是:"+number);
                System.out.println("第"+(j+1)+"位玩家共猜了"+count+"次");
                System.out.println("用时:"+(endingtime-starttime)/1000+"秒");        //计算时间
                
                
                
                //4.存取排名
                try{
                    wr=new FileWriter("c:\\猜数游戏排行榜.txt",true);
                    wr.write("\r\n");
                    wr.write("第"+(j+1)+"位玩家");
                    wr.write("\r\n");
                    wr.write("猜测次数");
                    String guess1=Integer.toString(count);
                    wr.write(guess1);
                    wr.write("\r\n");
                    wr.write("\r\n");
                    System.out.println("已写入文件");
                }catch(IOException e){
                    e.printStackTrace();
                }finally{
                    try{
                        wr.close();
                    }catch(IOException e){
                        e.printStackTrace();
                    }
                }
                }
        
        
            //5.读取排名
            Arrays.sort(count1);//分数排序
            
            System.out.println("排行榜:");
            int C=1;
            
            for(int score1:count1){
                System.out.println("恭喜!第"+(C++)+"名,共计"+score1+"次猜对\n");
            }
            
    }
        }    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值