一、课堂测试

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 )的更多相关文章

  1. java第二次课件课后动手动脑习题整理总结(2019年9月23号)

    一.动手动脑 1 1.题目 2.程序源代码 package yang8; import java.util.Scanner; import java.util.Random; public class ...

  2. java学习——关于java课件上动手动脑问题简单的分析

    问题一:关于以下的代码为什么会产生错误的问题的简单分析. 第一个动手动脑提供了一下的代码,可以发现,在Foo的这个类中只定义了一个Foo(int)类型的构造函数,在之前的学习工程中,我们并没有接触到j ...

  3. java异常处理动手动脑问题解决和课后总结

    动手动脑 一.问题:请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. 1.源代码 import javax.swing.*; cl ...

  4. JAVA方法03之动手动脑问题解决

    动手动脑1.当JAVA里定义的函数中去掉static后,怎么办?(如下程序,将square()函数的static去掉) public class SquareIntTest { public stat ...

  5. 11.8java课后动手动脑

    package 动手动脑; import javax.swing.*; class AboutException { public static void main(String[] a) { int ...

  6. JAVA06数组之动手动脑问题解决

     一.随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中. 1.设计思路:首先生成10个随机数,然后存放至长度至少是10的数组中,然后计算10个随机 ...

  7. JAV07接口与继承之动手动脑问题解决

    动手动脑:请自行编写代码测试以下特性:在子类中,若要调用父类中被覆盖的方法,可以使用super关键字. 1.源代码: package Work; class A{ public A(){ System ...

  8. 10.18号java课后动手动脑

    问题一结论:类如果提供了一个自定义的构造方法,将导致系统不再提供默认构造方法. 问题二结论:(1)程序运行的结果是100和300,field=200为类的初始化块,可以在类中使用“{”和“}”将语句包 ...

  9. java文件课后动手动脑

    package 第九周作业1; import java.io.File; import java.io.FileInputStream; import java.io.IOException; imp ...

随机推荐

  1. Spring Boot RestApi 测试教程 Mock 的使用

    测试 Spring Boot Web 的时候,我们需要用到 MockMvc,即系统伪造一个 mvc 环境.本章主要编写一个基于 RESTful API 正删改查操作的测试用例.本章最终测试用例运行结果 ...

  2. pl/sql修改data

    1,对于语句要包含rowid!

  3. TCP网络调试助手上提示错误:“1035 未知错误”的有效解决方法,本人实测确实可行

    转:https://blog.csdn.net/jacket_/article/details/97415651 图片转载:https://blog.csdn.net/Alice_YCR/articl ...

  4. HDU2612 Find a way (跑两遍BFS)

    Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year ...

  5. HDU1495 非常可乐(BFS/数论)

    大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多.但see ...

  6. php海量架构

    架构 Varnish+nginx+php(FastCGI)+MYSQL5+MenCache+MenCachedb 说明:我在设计系统架构时,进行了大胆的尝试,只用6台Web服务器,达到了可承受4000 ...

  7. sshpass安装以及使用

    centos7如何安装sshpass 先安装epel yum install -y epel-release yum repolist 安装完成epel之后,就可以按照sshpass了 yum ins ...

  8. subprocess.run()用法python3.7

    def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): "&q ...

  9. HackInOS靶机渗透

    一.环境配置 攻击机kali搭建在Vmware,桥接模式,ip:192.168.43.48 靶机HackInOS需要用VirtualBox导入ova文件,桥接模式,启动完成之后, 选择Ubuntu系统 ...

  10. 275 原型与原型链:显式原型prototype ,隐式原型__proto__,隐式原型链,原型链_属性问题,给原型对象添加属性/方法

    1.所有函数都有一个特别的属性 prototype : 显式原型属性 [普通构造函数的实例对象没有prototype 属性,构造函数有__proto__属性,原型对象有__proto__属性 ] 2. ...