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 ...
随机推荐
- Codeforces_429_B
http://codeforces.com/problemset/problem/429/B 挺简单的题,先求出四个点到每一点的最大和,然后枚举每一点,取和最大值. 注意两条路相交的点有且只有一个,这 ...
- angularJS 格式化日期 转载
angularjs中的filter(过滤器)——格式化日期的date 标签: filterangularjsdate http://blog.csdn.net/smile_panda/article/ ...
- 使用递归函数用来输出n个元素的所有子集(数据结构、算法与应用)
例如,三个元素的集合A = {a,b,c}的所有子集是:空集a,b,c,ab,ac,bc,abc,共八个 分析: 对于集合A中的每个元素,在其子集中都可能存在或者不存在,所以A的子集有23种. 可以设 ...
- C++ STL——优先队列的结构体表示方法
优先队列是队列的一种,但是自身具有一定的排序功能,所以不具有队列“先进先出”的性质 刚刚接触优先队列,看过网上的用法后感觉还是太过于朦胧,所以打算自己写一个稍微细节一点的. 头文件 #include& ...
- 「硬核干货」总结IDEA开发的26个常用设置
前言 程序员对待IDE都是虔诚的,经常因为谁是最好的IDE而在江湖上掀起波澜,曾经我也是. 后来我遇到了IDEA,从此是它,余生都是它. IDEA 毫无疑问是目前最强大的Java开发工具了,但是大部分 ...
- ELF文件之二——使用链接脚本
main.c int main() { ; } 编译:sparc-elf-gcc.exe -c main.c -o main.o 链接:sparc-elf-ld.exe main.o -nostart ...
- centos7 nginx 启动脚本
[root@localhost ~]# vim /lib/systemd/system/nginx.service [Unit] Description=nginx After=network.tar ...
- GPU 版 TensorFlow failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED
原因: 使用 GPU 版 TensorFlow ,并且在显卡高占用率的情况下(比如玩游戏)训练模型,要注意在初始化 Session 的时候为其分配固定数量的显存,否则可能会在开始训练的时候直接报错退出 ...
- PgSQL备份
SQL转储. 这里我们用到的工具是pg_dump和pg_dumpall. 这种方式可以在数据库正在使用的时候进行完整一致的备份,并不阻塞其它用户对数据库的访问.它会产生一个脚本文件,里面包含备份开始时 ...
- asp.net MVC项目开发之统计图的使用(前言)
接触这个项目,是项目组长已经完成了多数需求,并且有2个项目需要完工的情况下,让我加入,给了我2个表格,让我去设计出统计图. 第一次做统计图,可以说没有任何经验,不知道该如何下手,表格的数据量 ...