一、课堂测试

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. Mysql 中使用 utfmb4 需要注意的问题

    查资料时看到一个前人的经验总结,非常有用: http://seanlook.com/2016/10/23/mysql-utf8mb4/

  2. WCF全面解析之 第四讲 使用代码 部署服务

    关键代码: ServiceHost host = null; //启动 private void button1_Click(object sender, EventArgs e) { host=ne ...

  3. 使用电脑热点和Fiddler对Android app进行抓包

    如果没有路由器,怎么对app抓包?如果你的电脑可以开热点的话也可以. 打开Fiddler,菜单栏选择Tools->Options->Connections,勾选Allow remote c ...

  4. Linux - 重启wifi和网络

    iwconfig sudo ifconfig wlp4s0 down sudo iwconfig wlp4s0 power off sudo ifconfig wlp4s0 up sudo servi ...

  5. acm数论之旅(转载)--素数

    https://www.cnblogs.com/linyujun/p/5198832.html 前言:好多学ACM的人都在问我数论的知识(其实我本人分不清数学和数论有什么区别,反正以后有关数学的知识我 ...

  6. Codeforce 977E Cyclic Components

    dfs判断图的连通块数量~ #include<cstdio> #include<algorithm> #include<vector> #include<cs ...

  7. PCB设计要点

    pcb要点 : 2014年8月5日 13:04 一地线设计 1.1分类模拟地.数字地.外壳地.系统大地 1.2接地方式:单点接地(f<1MHZ,避免环流),多点接地(f>10MHZ降低地线 ...

  8. MBR扇区故障修复!

    一:进行分区且格式化硬盘 [root@roomc~]#mkfs -t ext4 /dev/sdb1    //格式化sdb1盘 二:模拟破坏/sda主硬盘破坏再修复! [root@roomc~]#mk ...

  9. 解决springmvc拦截器拦截静态资源的两种方式

    1.是采用<mvc:default-servlet-handler />,(一般Web应用服务器默认的Servlet名称是"default",所以这里我们激活Tomca ...

  10. linux mysql 查看数据库大小

    SELECT CONCAT(TRUNCATE(SUM(data_length)//,),'MB') AS data_size, CONCAT(TRUNCATE(SUM(max_data_length) ...