选题一 | 算术运算测试 |
题目要求 | |
实现十道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");
}
}
}