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 ...
随机推荐
- C语言:计算并输出S=1+(1+2^0.5)+(1+2^0.5+3^0.5)...+(1+2^0.5+3^0.5+...+n^0.5)
//计算并输出S=1+(1+2^0.5)+(1+2^0.5+3^0.5)...+(1+2^0.5+3^0.5+...+n^0.5) #include<math.h> #include< ...
- java linux安装jdk,git, maven
jdk8下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html mkdir ...
- Java入门笔记 08-注解
1. 注解:通过 @interface 关键字进行定义2. 元注解:是一种基本注解,但是它能够应用到其它的注解上面.@Retention:解释说明了这个注解的的存活时间.取值如下: Retention ...
- Google Earth Engine学习资源分享
最近在学习Google Earth Engine的使用,发现这个平台确实是一个非常好用.非常强大的平台.在GEE官网上找到了一些中文的学习资料,现在搬运过来分享给大家共同学习.教程分为两个部分 教程一 ...
- Protobuf协议--java实现
Protobuf协议,全称:Protocol Buffer 它跟JSON,XML一样,是一个规定好的数据传播格式.不过,它的序列化和反序列化的效率太变态了…… 来看看几张图你就知道它有多变态. pr ...
- QGridLayout栅格布局函数参数设置
对于PyQt5的栅格布局函数,主要是实现多个控件之间的栅格布局形式,一般有两种设置方式: 1.Qdesigner布局设置时直接使用栅格布局函数,便可以把所需要布局的控件直接按照栅格方式来进行布局: 2 ...
- Spring Boot 2.0 新特性
这是一篇总结文章,主要收集 Spring Boot 2.0 相对于 Spring Boot 1.x 的新特性,本章节并不提供实践性质的源代码.在 Spring Boot 系列文章中会持续退出实践章节. ...
- Linux终端的一些快捷键命令
一.初识linux的终端种类:本地.远程 查看本终端命令: #tty 命令,看到当前所处的终端 #(w)who 命令,看到系统中所有登录的用户 其中,tty 终端为表示在本地命令行模式下打开的终端:p ...
- JAVA面向对象解决实际问题实例(一)
某次战役中,为便于信息交互,我军侦察部门将此次战役的关键高地坐标设定为(x=0,y=0)并规定,每向东增加100米,x加1,每向北增加100米,y加1.同时,我军情报部门也破译了敌军向坦克发送的指挥信 ...
- VUE父子组件相互传值
passer.vue中代码 首先在文件中引入组件 import canvasDraw from '@/components/CanvasDraw/canvasDraw' 局部注册组件:componen ...