第三次作业
2015-10-24 13:05
405 查看
因为没有电脑,只能星期天才能去网吧做下,推迟了那么多天,抱歉。
import java.util.Random;
import java.util.Scanner;
public class Copy
/*
* 复制的源代码,所以直接把类名叫Copy了。 修改较大,将一些常用的封装成了方法,这一点是受到了张欣同学代码的提示。
* 至于增量是用的我的代码,因为我的代码早先已经实现了几个要求。 感觉比较省事些。
* 老师要求的那个让用户自己选择随机数生成的范围,我们并没有做,原因是我们用的命令行界面,选来选去已经很繁琐了,所以我们决定并没有写。希望老师理解。
*/
{
public int answer = 0;
private static int mistake = 0;
private static int correct = 0;
private static int select;
private int num;
private Random random;
public static void main(String[] args)
{
// 调用计算器方法。
Copy copy = new Copy();
copy.calculator();
}
private int inPut()
{
/*
* 创建input方法,用来接收并检测用户输入的数据
*
*/
while (true)
{
try
{
Scanner scanner = new Scanner(System.in);
answer = scanner.nextInt();
break;
}
catch (Exception e)
{
System.out.println("請輸入一個整數。");
}
}
return answer;
}
public void calculator()
{
Copy copy = new Copy();
Scanner scanner = new Scanner(System.in);
random = new Random();
System.out.print("请输入你想出的题目数量:");
num = scanner.nextInt();
System.out.println("请输入你想要的运算符.0 加,1 减,2 乘,3 除.4,随机 ");
select = scanner.nextInt();
System.out.println("请输入你规定的时间,以分钟为单位。");
long longTime = System.currentTimeMillis() + scanner.nextInt() * 10000;
new Thread()
{
/*
* 启用一个子线程,用来实现倒计时效果,不过我们两个并没有找到在煮程序已经运行完的时候把子线程关闭的方法,这里有一个BUG。
*
*/
public void run()
{
while (true)
{
long l = System.currentTimeMillis();
if (l == longTime)
{
System.out.println("时间到!!");
copy.score();
copy.exit(0);
}
else
{
continue;
}
}
}
}.start();
for (int i = 0; i < num; i++)
// 用for循环来设置出题数量,既用户输入的num值。
{
Switch(select);
}
score();
}
public void score()
{
/*
* 统计得分方法,用来判断用户输入的结果是否正确 以及是否有没做的。
*/
System.out.println("你一共作对" + correct + "道。");
System.out.println("你一共作错" + mistake + "道。");
if ((num - (mistake + correct)) != 0)
{
System.out.println("你一共作对了" + correct + "道,错了" + mistake + "道,没做" + (num - (mistake + correct)) + "道。");
}
else if (mistake == 0 && correct != 0)
{
System.out.print("你太聪明了!!^.^");
}
else if (correct > mistake)
{
System.out.print("再接再厉!^.^");
}
else if (correct > mistake)
{
System.out.print("再接再厉!^.^");
}
else if (mistake > correct)
{
System.out.print("不要灰心,再来一次吧。");
}
else if (mistake == 0 && correct == 0)
{
System.out.print("同学,你没做题哦!");
}
System.exit(0);
}
public void Switch(int select)
{
int x = random.nextInt(11);
int y = random.nextInt(11);
if (select == 4)
{
/*
* 这里设置if语句,用来判断用户是否选择了随机模式。
*
*/
select = random.nextInt(4);
}
switch (select)
// 根据用户选择的运算符号进行出题。
{
case 0:
System.out.println("请输入 " + x + "+" + y + " 的正确答案:");
answer = inPut();
if (answer != (x + y))
// 用来判断用户输入的答案是否与正确答案相符合,是,正确+1,否,错误+1.
{
mistake++;
}
else
{
correct++;
}
break;
case 1:
if (x < y)
{
System.out.print("请输入 " + y + "-" + x + " 的正确答案:");
answer = inPut();
if (answer != (y - x))
{
mistake++;
}
else
{
correct++;
}
break;
}
System.out.println("请输入 " + x + "-" + y + " 的正确答案:");
answer = inPut();
if (answer != (x - y))
{
mistake++;
}
else
{
correct++;
}
break;
case 2:
System.out.println("请输入 " + x + "*" + y + " 的正确答案:");
answer = inPut();
if (answer != (x * y))
{
mistake++;
}
else
{
correct++;
}
break;
case 3:
if (x == 0)
// 因为被除数不能为0,所以当被除数为0时,在这里进行掉转,让0为除数。
{
System.out.println("请输入 " + y + "/" + x + " 的正确答案:");
answer = inPut();
}
System.out.println("请输入 " + x + "/" + y + " 的正确答案:");
answer = inPut();
if (answer != (x / y))
{
mistake++;
}
else if (answer != 0)
{
mistake++;
}
else
{
correct++;
}
break;
}
}
public void exit(int x)
{
/*
* 创建退出方法,被子线程调用。
*
*/
System.exit(x);
}
}
对比第二次作业之后我们决定用李思豪同学的代码开始入手。做出了 除法减法结果不允许出现负数,除法被除数不允许为0,接受用户输入的数据,只可以为Int类型,新增随机出题,倒计时功能。
import java.util.Random;
import java.util.Scanner;
public class Copy
/*
* 复制的源代码,所以直接把类名叫Copy了。 修改较大,将一些常用的封装成了方法,这一点是受到了张欣同学代码的提示。
* 至于增量是用的我的代码,因为我的代码早先已经实现了几个要求。 感觉比较省事些。
* 老师要求的那个让用户自己选择随机数生成的范围,我们并没有做,原因是我们用的命令行界面,选来选去已经很繁琐了,所以我们决定并没有写。希望老师理解。
*/
{
public int answer = 0;
private static int mistake = 0;
private static int correct = 0;
private static int select;
private int num;
private Random random;
public static void main(String[] args)
{
// 调用计算器方法。
Copy copy = new Copy();
copy.calculator();
}
private int inPut()
{
/*
* 创建input方法,用来接收并检测用户输入的数据
*
*/
while (true)
{
try
{
Scanner scanner = new Scanner(System.in);
answer = scanner.nextInt();
break;
}
catch (Exception e)
{
System.out.println("請輸入一個整數。");
}
}
return answer;
}
public void calculator()
{
Copy copy = new Copy();
Scanner scanner = new Scanner(System.in);
random = new Random();
System.out.print("请输入你想出的题目数量:");
num = scanner.nextInt();
System.out.println("请输入你想要的运算符.0 加,1 减,2 乘,3 除.4,随机 ");
select = scanner.nextInt();
System.out.println("请输入你规定的时间,以分钟为单位。");
long longTime = System.currentTimeMillis() + scanner.nextInt() * 10000;
new Thread()
{
/*
* 启用一个子线程,用来实现倒计时效果,不过我们两个并没有找到在煮程序已经运行完的时候把子线程关闭的方法,这里有一个BUG。
*
*/
public void run()
{
while (true)
{
long l = System.currentTimeMillis();
if (l == longTime)
{
System.out.println("时间到!!");
copy.score();
copy.exit(0);
}
else
{
continue;
}
}
}
}.start();
for (int i = 0; i < num; i++)
// 用for循环来设置出题数量,既用户输入的num值。
{
Switch(select);
}
score();
}
public void score()
{
/*
* 统计得分方法,用来判断用户输入的结果是否正确 以及是否有没做的。
*/
System.out.println("你一共作对" + correct + "道。");
System.out.println("你一共作错" + mistake + "道。");
if ((num - (mistake + correct)) != 0)
{
System.out.println("你一共作对了" + correct + "道,错了" + mistake + "道,没做" + (num - (mistake + correct)) + "道。");
}
else if (mistake == 0 && correct != 0)
{
System.out.print("你太聪明了!!^.^");
}
else if (correct > mistake)
{
System.out.print("再接再厉!^.^");
}
else if (correct > mistake)
{
System.out.print("再接再厉!^.^");
}
else if (mistake > correct)
{
System.out.print("不要灰心,再来一次吧。");
}
else if (mistake == 0 && correct == 0)
{
System.out.print("同学,你没做题哦!");
}
System.exit(0);
}
public void Switch(int select)
{
int x = random.nextInt(11);
int y = random.nextInt(11);
if (select == 4)
{
/*
* 这里设置if语句,用来判断用户是否选择了随机模式。
*
*/
select = random.nextInt(4);
}
switch (select)
// 根据用户选择的运算符号进行出题。
{
case 0:
System.out.println("请输入 " + x + "+" + y + " 的正确答案:");
answer = inPut();
if (answer != (x + y))
// 用来判断用户输入的答案是否与正确答案相符合,是,正确+1,否,错误+1.
{
mistake++;
}
else
{
correct++;
}
break;
case 1:
if (x < y)
{
System.out.print("请输入 " + y + "-" + x + " 的正确答案:");
answer = inPut();
if (answer != (y - x))
{
mistake++;
}
else
{
correct++;
}
break;
}
System.out.println("请输入 " + x + "-" + y + " 的正确答案:");
answer = inPut();
if (answer != (x - y))
{
mistake++;
}
else
{
correct++;
}
break;
case 2:
System.out.println("请输入 " + x + "*" + y + " 的正确答案:");
answer = inPut();
if (answer != (x * y))
{
mistake++;
}
else
{
correct++;
}
break;
case 3:
if (x == 0)
// 因为被除数不能为0,所以当被除数为0时,在这里进行掉转,让0为除数。
{
System.out.println("请输入 " + y + "/" + x + " 的正确答案:");
answer = inPut();
}
System.out.println("请输入 " + x + "/" + y + " 的正确答案:");
answer = inPut();
if (answer != (x / y))
{
mistake++;
}
else if (answer != 0)
{
mistake++;
}
else
{
correct++;
}
break;
}
}
public void exit(int x)
{
/*
* 创建退出方法,被子线程调用。
*
*/
System.exit(x);
}
}
对比第二次作业之后我们决定用李思豪同学的代码开始入手。做出了 除法减法结果不允许出现负数,除法被除数不允许为0,接受用户输入的数据,只可以为Int类型,新增随机出题,倒计时功能。
相关文章推荐
- 深入理解Aho-Corasick自动机算法
- 【C语言】不使用(a+b)/2这种方式,求两个数的平均值。
- 深入理解Aho-Corasick自动机算法
- NOIp 2006 能量项链
- UVA 11235 Frequent values(RMQ)
- Visual Studio 2015 的安装与基本使用方法
- hdu 3944 lucas
- html中input文本框,初始里边有文字提示,当点击时,文字消失
- html中input文本框,初始里边有文字提示,当点击时,文字消失
- 【C语言】【笔试题】编写函数: unsigned int reverse_bit(unsigned int value); 翻转二进制序列
- centos rpm 安装mysql5.7
- HDU 3622 Bomb Game
- Python if elif else语句
- oracle性能优化之表设计
- 【C语言】【笔试题】两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
- 九度OJ 1150:Counterfeit Dollar(假美元) (分析、检验)
- codevs1376帕秋莉•诺蕾姬 东方幻想乡系列模拟赛Stage 2[三星]
- Hbase结构简单、作法
- 九度OJ 1150:Counterfeit Dollar(假美元) (分析、检验)
- 地图定位