首先是枚举,使用enum关键字创建,如:enum {SMALL,MEDIUM,LARGE}之后便可定义Size 的类型变量,并复制为{SMALL,MEDIUM,LARGE};其中一个,注意赋值方法,x=Size.SMALL;利用枚举类型可以进行比较,默认的由小到大是从左到右,即SMALL<MEDIUM<LARGE,也可以进行==比较;enum有两个内置方法,values()和valueof();value()可返回一个包含枚举常数列表的数组,可以直接调用如:Size value:Size.values(),这样可为value逐个赋值SMALL,MEDIUM,LARGE

,使用数组也可以,Size all[]=Size.values();这样all就是一个成员为SMALL,MEDIUM,LARGE的数组;最后是valueof();他的作用是从字符串读取值,如Size u=Size.valueOf("SMALL");这样u便赋值为SMALL;注意若字符串内容与枚举类型成员不符,那么程序会报错。

接下来是原码、反码、补码的问题,计算机用二进制储存数据,其最高位数会用于表示正负,如八位进制的二进制中,1表示为00000001,-1为10000001,最高位为0说明是正数,是1则为负数;反码,正数的反码就是它本身,负数的话符号位不不变,后面全部取其反;补码,正数补码是本身,负数补码是在原基础上+1;原因的话,首先是为了提升计算机的性能,在计算中只使用加法(要用减法的话只需加上减数的负数),而用原码进行减法的话结果会因符号位的存在而得不到正确结果,因此发明了反码,反码可以得到减法的正确结果;补码又是因为什么呢?这是因为在计算结果的0的时候,用反码计算会出现11111111(-0),在我们眼中+0(000000000)与-0都是一样的,但计算机不能识别,如果用补码的话,+0与-0都是00000000,这样就只有一个编码来代表0,另外,这样11111111也可以用来代表-128了;最后关于程序中浮点数不精确的问题,这也是因为二进制,比如0.5的二进制表示为0000.1000,二进制只能表示2的n次,小数位只能用1/2、1/4、1/8......来进行表示,但如0.03这样的数只能做到无限接近但无法精确表示,最后进行约等于,这就是精确长度的问题了,精确长度越长,越能接近数值,精确长度越短,越会出现误差。

关于System.out.println()输出问题,

这个涉及+的运算顺序了,+当两端任意一端存在字符串时,会把两端按照字符串输出,1式若想要计算X+Y结果,就要用()括起来。

java课上老师布置的任务是制作一个计算题随机生成程序,两位正整数数以内的四则运算,要求乘法结果不能大于两位数,除法要能整除,另外题目之间不能重复,可以由用户输入来选择输出多少道题,一行输出多少道题。下面我来说一下我解决的思路,希望对遇上相似问题的人有所帮助。

首先,既然要随机的生成运算式,就必定要用随机数了,使用Random函数就能解决这个问题,但运算符也是要随机生成的,这就是一个小问题吧,这里也是用随机数的方法,随机取0~3之间的一个数,使用switch来根据不同的取到的数来对应取到不同的运算符,这就达到了随机运算符的目的,然后就是题目要求了,取好随机数之后用if判定一下,不符合就重新取,这样就可以了。

这道题最有难度的地方大概是不能重复原则吧,这里我是用了一个三维数组int ch[3][100][100]的方法一维存放运算符,一维存放第一个数,一维存放第二个数,但这个存放我需要说明一下存放方式,比如2+3=存放方式,我的‘+’对应的是1,那么我在ch[1][2][3]存放数据1,这样,在生成算式后,先判断他所对应的数组位置是否为1,是的话说明重复了,那么就重新生成式子。

代码如下

package pp;
import java.util.Random;
import java.util.Scanner;
public class tt {

public static void main(String args[]) {
Random ra =new Random();int a,b,c,d=0,l=0;
int [][][] ch=new int [4][100][100];

int limt,line;
Scanner input=new Scanner(System.in);
limt= input.nextInt();
line=input.nextInt();
for(int i=1;i<(limt+1);i++ ) {

a=(ra.nextInt(99)+1);
b=(ra.nextInt(99)+1);
c=(ra.nextInt(4));
if(c==0)
{
while(a<b||ch[c][a][b]==1) {
a=(ra.nextInt(99)+1);
b=(ra.nextInt(99)+1);
}
} if(c==1)
{
while(ch[c][a][b]==1) {
a=(ra.nextInt(99)+1);
b=(ra.nextInt(99)+1);
}
}
if(c==2)
{
while(a*b>=100||ch[c][a][b]==1)
{
a=(ra.nextInt(99)+1);
b=(ra.nextInt(99)+1);
}

}
if(c==3)
{
while(a%b!=0||ch[c][a][b]==1) {
a=(ra.nextInt(99)+1);
b=(ra.nextInt(99)+1);

}
}
ch[c][a][b]=1;
switch(c)
{
case 0:System.out.print(i+". "+a+"-"+b+"= ");break;
case 1:System.out.print(i+". "+a+"+"+b+"= ");break;
case 2:System.out.print(i+". "+a+"*"+b+"= ");break;
case 3:System.out.print(i+". "+a+"/"+b+"= ");break;}
l++;
if(l%line==0)System.out.println(" ");
}

}

}

java课程学习心得的更多相关文章

  1. Java开发学习心得(二):Mybatis和Url路由

    目录 Java开发学习心得(二):Mybatis和Url路由 1.3 Mybatis 2 URL路由 2.1 @RequestMapping 2.2 @PathVariable 2.3 不同的请求类型 ...

  2. Java开发学习心得(一):SSM环境搭建

    目录 Java开发学习心得(一):SSM环境搭建 1 SSM框架 1.1 Spring Framework 1.2 Spring MVC Java开发学习心得(一):SSM环境搭建 有一点.NET的开 ...

  3. java集合类学习心得

    java集合类学习心得 看了java从入门到精通的第十章,做个总结,图片均取自网络. 常用集合的继承关系 Linked 改快读慢 Array 读快改慢 Hash 两都之间 Collection是集合接 ...

  4. 20175215 2018-2019-2 第四周Java课程学习总结

    第五章学习内容 1.子类的继承性 (1)子类和父类在同一包中的继承性 如果子类和父类在同一个包中,那么,子类自然地继承了其父类中不是private的成员变量作为自己的成员变量,并且也自然地继承了父类中 ...

  5. JAVA课程学习感想

    JAVA课程学习感想 在学习JAVA之前,我们学习了C语言,汇编语言,数据结构等等.虽然学习了这些,但对于JAVA来说,学习起来不是那么容易,所有的计算机语言有相似的地方,但他们更有不同的地方.对我来 ...

  6. Java基础学习心得笔记

    对于很多只会C语言的初学者而言,面对java基础语法学习,反而感觉很难,其实其中最大的问题不是语法难,而是一种编程思想的转变.面向过程就是把你的代码封装成函数,然后依次去做一件事情,面向过程是把你要做 ...

  7. Java开发学习心得(三):项目结构

    [TOC] 3 项目结构 经过前面一系列学习,差不多对Java的开发过程有了一定的了解,为了能保持一个良好的项目结构,考虑到接下来要进行开发,还需要学习一下Java的项目结构 下面以两个项目结构为参照 ...

  8. 20175215 2018-2019-2 第十周java课程学习总结

    第十二章 Java多线程机制 12.1 进程与线程 12.1.1 操作系统与进程 程序是一段静态的代码,它是应用软件执行的蓝本. 进程是程序的一次动态执行过程,它对应了从代码加载.执行至执行完毕的一个 ...

  9. 20175215 2018-2019-2 第九周java课程学习总结

    第十一章 JDBC与MySQL数据库 11.1 MySQL数据库管理系统 下载安装过程略 使用的是MySQL 5.6而非5.7 11.2 启动MySQL数据库服务器 启动和root用户过程略 11.3 ...

随机推荐

  1. Codeforces 924 A Tritonic Iridescence(暴力集合交集、相等)

    题目链接:点击打开链接 There is a rectangular grid of n rows of m initially-white cells each. Arkady performed ...

  2. c++ 类成员的初始化顺序

    class TestClass1 { public: TestClass1() { cout << "TestClass1()" << endl; } Te ...

  3. 前端jQuery日历控件报错 $("#datepicker").datepicker is not a function

    使用日历控件时,前端产生错误: $("#datepicker").datepicker is not a function 问题原因 前端在同一个页面,jQuery引入了两次. 解 ...

  4. python学习(9)字典的基本应用

    字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字.字符串.元组,这种结构类型也称之为映射.字典类型是Python中唯一內建的映射类型.字典可以理解为列表的升级版. dict是无序的 key ...

  5. Apache-Tomcat-Ajp漏洞(CVE-2020-1938)漏洞复现

    前言 Apache Tomcat会开启AJP连接器,方便与其他Web服务器通过AJP协议进行交互.由于Tomcat本身也内含了HTTP服务器,因此也可以视作单独的Web服务器.此漏洞为文件包含漏洞,攻 ...

  6. C#开源组件DocX版本区别点滴

    在C#中,需要处理Office Word文档时,由于MsOffice Com的版本局限性,所以选择不与本机MsOffice安装与否或安装版本相关的软件,以便软件或使用时的通用性与版权限制,特别是对于国 ...

  7. Java中HashSet的重复性与判等运算重载

    目录 还有一个故事--(平行世界篇) 还有一个美丽的梦幻家园:java.util 并且还有一个善战的达拉崩巴:HashSet 还有另外一个故事(不是虚假传说) 还有一对涂满毒药的夺命双匕:equals ...

  8. 1,Python爬虫环境的安装

    前言 很早以前就听说了Python爬虫,但是一直没有去了解:想着先要把一个方面的知识学好再去了解其他新兴的技术. 但是现在项目有需求,要到网上爬取一些信息,然后做数据分析.所以便从零开始学习Pytho ...

  9. 获取Data和Log默认路径

    使用SERVERPROPERTY()来得到Data和Log的默认路径: InstanceDefaultDataPath和InstanceDefaultLogPath分别返回默认数据和日志目录. DEC ...

  10. Linux nohup不输出日志文件的方法

    引用:https://blog.csdn.net/guotao15285007494/article/details/84136234 最近在Linux上部署视频流推送应用时,由于网络不稳定等原因程序 ...