作业
动手实验
double计算不精确:通过DoubleDecimal对象解决
浮点数由两部分组成:指数和尾数。如果知道怎么进行浮点数的二进制和十进制转换,如果在这个转换过程中,浮点数参与了计算,那么在转换的过程中就会变得不可预知,并且变得不可逆。
源代码:
public class TestDouble {
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));
}
}
动手动脑X+Y(网上没找到,自己瞎编了):可能是括号内代码从左往右执行,第一个由于没有优先级,直接将X和Y插入字符串后,第二个是从左往右先计算第一个加号,由于两个都是int类型,就进行运算,后为字符串无法运算,就插入最后。
源代码:
int X=100; int Y=200; System.out.println("X+Y="+X+Y); System.out.println(X+Y+"=X+Y");
动手动脑枚举类型:enum Size{SMALL,MEDIUM,LARGE};//定义一个枚举类型
s.getClass().isPrimitive();//确定是否为基本枚举类型
for(Size value:Size.values()){//列出定义的全部枚举类型
System.out.println(value);
}
源代码:
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) DAY是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。
(3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。
(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。
(5) 枚举型是预处理指令#define的替代。
(6) 类型定义以分号;结束。
源码、反码、补码:
计算机中数据是由二进制存储:
1、对于一个正数来说:二进制原码、反码、补码是同一个,完全相同。
例如:
对应的二进制原码:00000000 00000000 00000000 00000001
对应的二进制反码:00000000 00000000 00000000 00000001
对应的二进制补码:00000000 00000000 00000000 00000001
2.对于一个负数,他的反码,将第一位符号位保留,剩下的反向写出。补码将反码加1;
对应的二进制原码:10000001
对应的二进制反码(符号位不变,其它位取反
):11111110
对应的二进制补码(反码+1
):11111111
课堂测试三:通过二维数组得到运算数数量以及题目数。
import java.util.Random;
import java.util.Scanner;
public class math {
static Random random = new Random();
static int get_number() {
int a = (int)random.nextInt(99);
return a;
}
static int get_number(int a,int b) {
int c = (int)random.nextInt(b-a)+a;
return c;
}
static char get_char(int a) {
if(a < 25) {
return '+';
}
else if(a < 50) {
return '-';
}
else if(a < 75) {
return '*';
}
else
return '/';
}
public static void main(String[] args) {
Scanner S = new Scanner(System.in);
int math_n,math_k,math_nn,j = 1,C=0,c,kuohao,d,temp=1;
System.out.print("是否有乘除法(有请按1):");
C = S.nextInt();
System.out.print("是否有括号(有请按1):");
kuohao = S.nextInt();
System.out.println("操作数的个数:");
math_nn = S.nextInt();
System.out.println("要出的题数:");
math_n = S.nextInt();
System.out.print("输入数值范围:");
c = S.nextInt();
d = S.nextInt();
int[][] a = new int [math_n][math_nn + 1];
int[][] b = new int [math_n][math_nn + 1];
System.out.println("打印格式:");
math_k = S.nextInt();
for(int i=0;i<math_n;i++) {
for(int j1=0;j1<math_nn + 1;j1++) {
a[i][j1] = get_number(c,d);
}
}
for(int i=0;i<math_n;i++) {
for(int j1=0;j1<math_nn + 1;j1++) {
b[i][j1] = get_number();
if(C!=1&b[i][j1]>50) {
b[i][j1] =b[i][j1]-50;
}
}
}
int left=0,right=0,kuohao1=0,kuohao2=0;
for(int i=0;i<math_n;i++) {
for(int j1=0;j1<math_nn;j1++) {
kuohao1 = get_number();
if(kuohao1>50&left==0&j1<math_nn-1) {
System.out.print("(");
left++;
}
kuohao2 = get_number();
System.out.print(a[i][j1]);
if(kuohao2>kuohao1&right==0&left>1) {
System.out.print(")");
right++;
}
if(j1 < math_nn - 1) {
System.out.print(get_char(b[i][j1]));
}
if(left>0) {
left++;
}
}
if(left>0&right==0) {
System.out.print(")");
}
left = 0;
right = 0;
System.out.print("= ");
if(i%math_k == 0) {
System.out.println();
temp=0;
}
}
}
}
————————————————
原文指导链接:https://blog.csdn.net/qq_44715943/article/details/115418965