java课堂第一次随机测试和课件课后动手动脑问题解决(2019-9-16 )
一、课堂测试
1、课堂测试:花二十分钟写一个能自动生成30道小学四则运算题目的 “软件”
要求 (1)减法结果不能为负数
(2)乘法结果不得超过一百,除法结果必须为整数
(3)题目避免重复;
(4)可定制(数量/打印方式);
2、程序设计思路
(1)产生两个1-100的随机数作为题目参与运算的数据,产生一个1-4的随机数作为加减乘除运算符打印
(2)用for循环控制出题个数c,用循环次数i对一行打印题目数求余为0达到一行出题要求输出换行
(3)在减法程序中用while(d1<d3)循环来保证减法结果不能为负数。
(4)在乘法程序中用while(s1*s3>100)循环来保证乘法结果不超过一百,用循环判断除法最终结果为整数
(5)用一个二维数组和一个一维数组存储之前所有输入的数字和运算符,再用循环判断是不是重复生成,如果重复生成,则重新生成数字或者运算符,用来保证出题不重复。
package yang9;
/*
* 信185-1
*20183504
* 肖洋
*/
import java.util.Random;
import java.util.Scanner;
public class computer {
static Scanner input=new Scanner(System.in);
static String []str=new String[4];
public static void main(String[]args) {
int []a=new int[10000000];
int []b=new int[10000000];
int []c=new int[10000000];
System.out.println("请输入打印总题数:");
int sum=input.nextInt();
System.out.println("请输入每行打印题目数:");
int i=input.nextInt();
str[0]="+";
str[1]="-";
str[2]="*";
str[3]="/";
Random rand=new Random();
int num1,num2,num3;
for(int d=0;d<sum;d++)
{
System.out.print((d+1)+". ");
int count=0;
num1=rand.nextInt(99)+1;
num2=rand.nextInt(4);
num3=rand.nextInt(99)+1;
for(int j=0;j<count;j++) {
if(a[j]==num1&&b[j]==num2&&c[j]==num3) {
num1=rand.nextInt(99)+1;
num2=rand.nextInt(4);
num3=rand.nextInt(99)+1;
}
}
if(num2==0)
{
System.out.print(num1);
System.out.print(str[num2]);
System.out.print(num3+"= ");
}
if(num2==1)
{
while(num3>num1) {
num3=rand.nextInt(99)+1;
}
System.out.print(num1);
System.out.print(str[num2]);
System.out.print(num3+"= ");
}
if(num2==2)
{
while(num3*num1>=100)
{
num1=rand.nextInt(99)+1;
num3=rand.nextInt(99)+1;
}
System.out.print(num1);
System.out.print(str[num2]);
System.out.print(num3+"= ");
}
if(num2==3)
{
while(num1%num3!=0)
{
num1=rand.nextInt(99)+1;
num3=rand.nextInt(99)+1;
}
System.out.print(num1);
System.out.print(str[num2]);
System.out.print(num3+"= ");
}
a[count]=num1;
b[count]=num2;
c[count]=num3;
count++;
if((d+1)%i==0)
{
System.out.println("\n");
}
}
}
}
运行结果如下:


二、动手动脑题
1、问题:仔细阅读示例: EnumTest.java,运行它,分析运行结果?你能得到什么结论?你掌握了枚举类型的基本用法了吗?
程序代码如下:
public class EnumTest {
public static void main(String[] args) {
Size s=Size.SMALL;
Size t=Size.LARGE;
//s和t引用同一个对象?
System.out.println(s==t); //
//是原始数据类型吗?
System.out.println(s.getClass().isPrimitive());
//从字符串中转换
Size u=Size.valueOf("SMALL");
System.out.println(s==u); //true
//列出它的所有值
for(Size value:Size.values()){
System.out.println(value);
}
}
}
enum Size{SMALL,MEDIUM,LARGE};
运行结果:

结论:
(1)枚举类型是引用类型,枚举的每一个具体值都引用一个特定对象,引用不同具体值对象地址不同。
(2)从字符串中转换的枚举类型中实例化的对象的的具体值赋给新的枚举类型实例化对象和原枚举类型中实例化的对象的地址相同。
(3)枚举类型中实例化的对象的的具体值不是java的基本数据类型,而是用户自定义的数据类型。
(4)枚举类型的数据元素就是枚举类型中所有具体值。
2、问题:请运行以下代码,你看到了什么样的输出,意外吗?
代码:
public class test {
public static void main(String args[]) {
System.out.println("0.05 + 0.01 = " + (0.05 + 0.01));
System.out.println("1.0 - 0.42 = " + (1.0 - 0.42));
System.out.println("4.015 * 100 = " + (4.015 * 100));
System.out.println("123.3 / 100 = " + (123.3 / 100));
}
}
输出:

结论:
使用double类型的数值进行计算,计算结果是不精确的。
原因:二进制和十进制的转换出现问题,简单来说就是我们给出的数值,在大多数的情况下需要比64bit更多的位数才能
准确表示出来,而double类型的数值只有64bit,后面舍去的位数一定会带来的误差,无法得到数学上精确的结果。
3、问题:以下代码的输出结果是什么?为什么会有这样的输出结果?
public class Test {
public static void main(String[] args) {
int X=100;
int Y=200;
System.out.println("X+Y="+X+Y);
System.out.println(X+Y+"=X+Y");
}
}
输出结果:

原因:
1.System.out.println(""X+Y="+X+Y")第一个遇到是字符串,所以后面输出的X和Y都会按照字符串来输出,所以并不会计算X+Y的值,所以输出结果为:X+Y=100200 。
2.而System.out.println(X+Y+"=X+Y")第一个遇到的是int型的X,第二个遇到的是int型的Y,所以输出二者相加的int型结果,再连接输出后面的字符串"=X+Y",所以
输出结果300=X+Y 。
3.System.out.println()中的加号一般用来连接字符串,但是如果是System.out.println("X+Y="+(X+Y))中的后面的加号用来运算,即加号没有括号括起时,
是连接字符串的作用,如果加号被括号括起来是进行运算的作用,所以System.out.println("X+Y="+(X+Y))的输出结果为:X+Y=300 。
java课堂第一次随机测试和课件课后动手动脑问题解决(2019-9-16 )的更多相关文章
- java第二次课件课后动手动脑习题整理总结(2019年9月23号)
一.动手动脑 1 1.题目 2.程序源代码 package yang8; import java.util.Scanner; import java.util.Random; public class ...
- java学习——关于java课件上动手动脑问题简单的分析
问题一:关于以下的代码为什么会产生错误的问题的简单分析. 第一个动手动脑提供了一下的代码,可以发现,在Foo的这个类中只定义了一个Foo(int)类型的构造函数,在之前的学习工程中,我们并没有接触到j ...
- java异常处理动手动脑问题解决和课后总结
动手动脑 一.问题:请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. 1.源代码 import javax.swing.*; cl ...
- JAVA方法03之动手动脑问题解决
动手动脑1.当JAVA里定义的函数中去掉static后,怎么办?(如下程序,将square()函数的static去掉) public class SquareIntTest { public stat ...
- 11.8java课后动手动脑
package 动手动脑; import javax.swing.*; class AboutException { public static void main(String[] a) { int ...
- JAVA06数组之动手动脑问题解决
一.随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中. 1.设计思路:首先生成10个随机数,然后存放至长度至少是10的数组中,然后计算10个随机 ...
- JAV07接口与继承之动手动脑问题解决
动手动脑:请自行编写代码测试以下特性:在子类中,若要调用父类中被覆盖的方法,可以使用super关键字. 1.源代码: package Work; class A{ public A(){ System ...
- 10.18号java课后动手动脑
问题一结论:类如果提供了一个自定义的构造方法,将导致系统不再提供默认构造方法. 问题二结论:(1)程序运行的结果是100和300,field=200为类的初始化块,可以在类中使用“{”和“}”将语句包 ...
- java文件课后动手动脑
package 第九周作业1; import java.io.File; import java.io.FileInputStream; import java.io.IOException; imp ...
随机推荐
- css 属性值 calc (目前只了解部分)
移动端页面,有如下图的需求: 实现效果: 实现 css 代码: .list {/*父级*/ border: 1px solid #E9EAEA; border-radius: 2px; backgro ...
- VMware15下载、安装、激活
1.VMware15下载 链接:https://pan.baidu.com/s/1bI8LReRY-5k81O3rrNgg-A 提取码:6c03 2.VMware15安装 3.VMware15激活
- Python - int()
参考 https://docs.python.org/3/library/functions.html?highlight=int#int If x is not a number or if bas ...
- Tornado项目简单创建
Tornado是使用Python编写的一个强大的.可扩展的Web服务器.它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应用和工具中. tornado技术 ...
- springmvc中整合mongodb副本集配置文件
配置文件jdbc.properties: mongo.hostport=192.168.100.100:28007,192.168.100.110:28008,192.168.100.120:2800 ...
- SQLServer亿万级数据优化
--创建分区文件组alter database seclab_sgk_db add filegroup seclab_sgk_db_01alter database seclab_sgk_db add ...
- node.js express 中文参考手册
https://www.runoob.com/w3cnote/express-4-x-api.html 原文地址:https://www.zybuluo.com/bajian/note/444152 ...
- JavaWeb项目用浏览器打开网页出现Session Error提示的解决办法
找到web.xml配置的原始配置的位置: <servlet> <servlet-name>dwr-invoker</servlet-name> <servle ...
- Python学习笔记010
倒三角 num2 = int(input("Line:")) while num2 > 0: num1 = num2 while num1 > 0: ...
- mybatis源码探索笔记-2(构建SqlSession并获取代理mapper)
前言 上篇笔记我们成功的装载了Configuration,并写入了我们全部需要的信息.根据这个Configuration创建了DefaultSqlSessionFactory.本篇我们实现构建SqlS ...