java课程学习心得
首先是枚举,使用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课程学习心得的更多相关文章
- Java开发学习心得(二):Mybatis和Url路由
目录 Java开发学习心得(二):Mybatis和Url路由 1.3 Mybatis 2 URL路由 2.1 @RequestMapping 2.2 @PathVariable 2.3 不同的请求类型 ...
- Java开发学习心得(一):SSM环境搭建
目录 Java开发学习心得(一):SSM环境搭建 1 SSM框架 1.1 Spring Framework 1.2 Spring MVC Java开发学习心得(一):SSM环境搭建 有一点.NET的开 ...
- java集合类学习心得
java集合类学习心得 看了java从入门到精通的第十章,做个总结,图片均取自网络. 常用集合的继承关系 Linked 改快读慢 Array 读快改慢 Hash 两都之间 Collection是集合接 ...
- 20175215 2018-2019-2 第四周Java课程学习总结
第五章学习内容 1.子类的继承性 (1)子类和父类在同一包中的继承性 如果子类和父类在同一个包中,那么,子类自然地继承了其父类中不是private的成员变量作为自己的成员变量,并且也自然地继承了父类中 ...
- JAVA课程学习感想
JAVA课程学习感想 在学习JAVA之前,我们学习了C语言,汇编语言,数据结构等等.虽然学习了这些,但对于JAVA来说,学习起来不是那么容易,所有的计算机语言有相似的地方,但他们更有不同的地方.对我来 ...
- Java基础学习心得笔记
对于很多只会C语言的初学者而言,面对java基础语法学习,反而感觉很难,其实其中最大的问题不是语法难,而是一种编程思想的转变.面向过程就是把你的代码封装成函数,然后依次去做一件事情,面向过程是把你要做 ...
- Java开发学习心得(三):项目结构
[TOC] 3 项目结构 经过前面一系列学习,差不多对Java的开发过程有了一定的了解,为了能保持一个良好的项目结构,考虑到接下来要进行开发,还需要学习一下Java的项目结构 下面以两个项目结构为参照 ...
- 20175215 2018-2019-2 第十周java课程学习总结
第十二章 Java多线程机制 12.1 进程与线程 12.1.1 操作系统与进程 程序是一段静态的代码,它是应用软件执行的蓝本. 进程是程序的一次动态执行过程,它对应了从代码加载.执行至执行完毕的一个 ...
- 20175215 2018-2019-2 第九周java课程学习总结
第十一章 JDBC与MySQL数据库 11.1 MySQL数据库管理系统 下载安装过程略 使用的是MySQL 5.6而非5.7 11.2 启动MySQL数据库服务器 启动和root用户过程略 11.3 ...
随机推荐
- 基于 HTML5 WebGL 的智慧楼宇三维可视化监控
前言 可视化的智慧楼宇在 21 世纪是有急迫需求的,中国被世界称为"基建狂魔",全球高层建筑数量位居首位,所以对于楼宇的监控是必不可少.智慧楼宇可视化系统更多突出的是管理方面的功能 ...
- LNK2019
原因:inline函数被外部文件的函数调用时,必须将inline函数定义在头文件中,不能定义在cpp文件中.
- 02-msyql-存储引擎
1.优化器针对索引算法 1.1MySQL索引自优化-AHI(自适应HASH索引) MySQL的InnoDB引擎,能够创建只有Btree. AHI作用: 自动评估"热"的内存索引pa ...
- linux web站点常用压力测试工具httperf
一.工具下载&&安装 软件获取 ftp://ftp.hpl.hp.com/pub/httperf/ 这里使用的是如下的版本 ftp://ftp.hpl.hp.com/pub/httpe ...
- 【HDU - 2859 】Phalanx (dp 最大对称子图)
Phalanx 先搬翻译 Descriptions: 给你一个矩阵,只由小写或大写字母构成.求出它的最大对称子矩阵的边长. 其中对称矩阵是一个k*k的矩阵,它的元素关于从左下角到右上角的对角线对称.例 ...
- c语言double类型的输入
double输入用 %lf ,而不能用 %f 今天在使用double类型输入时先用了 scanf("%lf", &a),结果以%f输出的时候都是0,以%g,%e输出似乎是最 ...
- OpenCV3入门(十)图像轮廓
1.图像轮廓 1.1图像轮廓与API函数 轮廓是一系列相连的点组成的曲线,代表了物体的基本外形,相对于边缘,轮廓是连续的,边缘并不全部连续.一般地,获取图像轮廓要经过下面几个步骤: 1) 读取 ...
- Asp.net Core MVC(三)UseMvc设置路由
在家办公,下班继续看点东西,不废话,继续看MVC的路由. asp.net核心mvc的路由是建立在asp.net核心的路由之上的.通过终结点加载路由中间件的配置方式在此不细说了,(DOTNET Core ...
- C# DateTime 工具类
项目gitHub地址 点我跳转 今天给大家带来一个C#里面的时间工具类,具体的直接看下面代码 using System; namespace ToolBox.DateTimeTool { public ...
- Spark之RDD本质
1.在一个完整的数据转换流程里往往涉及到多个具有衍生关系RDD,这些RDD其实是通过逻辑串联来利用装饰器模式层层包装扩展的的一堆对象,这些相邻RDD间必须有继承关系.并且比Java中的装饰器来的更彻底 ...