首先是枚举,使用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. c语言小游戏-扫雷的完成

    C语言-扫雷游戏 本文将对此游戏做一个大致的概述,此代码适合初学者,编写软件使用了vs2017. 该代码可以实现如下功能: 1.用户可以选择3个难度,分别布置不同个数的雷. 2.随机数设置雷的位置. ...

  2. Python常用库 - logging日志库

    logging的简单介绍 用作记录日志,默认分为六种日志级别(括号为级别对应的数值) NOTSET(0) DEBUG(10) INFO(20) WARNING(30) ERROR(40) CRITIC ...

  3. Jmeter之下载文件

    前言 我们可以利用postman工具来测试下载文件的接口,那么假如要利用Jmeter工具来进行下载接口的测试,又该如何测试呢? 下载文件的接口地址:/pinter/file/api/download? ...

  4. 云服务器InfluxDB & Chronograf配置

    环境: 阿里云服务器 Ubuntu 18.04.3 LTS InfluxDB 1.7.10 (截至2020.2.20最新版) chonograf 1.8.0 (2020.2.19推出) 配置建议: 不 ...

  5. Mac设置Linux免密登陆

    利用公钥认证登录 1.创建共钥 输入下面的命令,一路回车 ssh-keygen -t rsa 2.复制公钥到ssh服务器 将上一步生成的id_rsa.pub公钥文件复制到目标服务器对应用户下的~/.s ...

  6. [LeetCode] [链表] 相关题目总结

    刷完了LeetCode链表相关的经典题目,总结一下用到的技巧: 技巧 哑节点--哑节点可以将很多特殊case(比如:NULL或者单节点问题)转化为一般case进行统一处理,这样代码实现更加简洁,优雅 ...

  7. eclipse创建java和web工程

    JAVA Eclipse→File→New→Project.. WEB 右键mvn项目→Properties src/main/webapp pom.xml <project xmlns=&qu ...

  8. StarUML之六、StarUML规则与快捷键

    本章内容参考官网即可,不做详细说明,实践出真知! starUMl规则主要是在模型设计的约束条件 https://docs.staruml.io/user-guide/validation-rules ...

  9. Re:萌娘百科上的黑幕实现

    Re:萌娘百科上的黑幕 说明 本文所有的代码均来自萌娘百科.萌娘百科打钱! 第零段话(我想说的) 这方面不是我的专长,所以有的地方说的不对也请纠正! 我可不是萌娘百科的员工或者管理员或者收了钱 我只是 ...

  10. url相对路径变成绝对路径

    var eleLink = document.createElement('a'); eleLink.href = "/wordpress/?p=9227"; console.lo ...