首页 > 其他分享 >枚举,精度,四则运算,加合集

枚举,精度,四则运算,加合集

时间:2024-09-27 22:14:40浏览次数:8  
标签:四则运算 System 枚举 println Size 合集 public out

一.枚举类型
仔细阅读示例: EnumTest.java,运行它,分析运行结果?
代码如下:
`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};分析及结果如下: enum Size{SMALL,MEDIUM,LARGE};此段代码定义了Size枚举;Size s=Size.SMALL;
Size t=Size.LARGE;创建Size变量s,t;//s和t引用同一个对象?
System.out.println(st); 比较变量s,t 结果:false 说明s和t引用的不是同一个对象//是原始数据类型吗?
System.out.println(s.getClass().isPrimitive());调用**Class**中的isPrimitive()方法判断枚举变量是否为原始数据类型。 结果:false 说明枚举变量不属于原始数据类型。 **补充:原始数据类型:指的是直接存储基本数据的数据类型(如:int,double),它们有固定的字节数,并且不是对象。**//从字符串中转换
Size u=Size.valueOf("SMALL");
System.out.println(s
u); //true此段代码根据枚举类型中的valueOf方法将字符串转换为枚举变量 结果:false 通过字符串转换得到的同值枚举变量与原创建的枚举变量是相同的。//列出它的所有值
for(Size value:Size.values()){
System.out.println(value);
}`
结果如下:
SMALL
MEDIUM
LARGE
整段代码运行结果:

你能得到什么结论?你掌握了枚举类型的基本用法了吗?
结论一:枚举变量有其固定的值;
结论二:枚举类型不是原始数据类型
结论三:valueOf方法可以创建枚举变量
结论四:values方法可以遍历枚举类型

二.浮点数的精度问题
观察以下一段代码,相信小朋友都可以一眼看出答案,但是计算机给出的答案是这样吗?
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));
}

}
完整运行结果:

想不到吧,最后的运行结果居然是这样一堆奇奇怪怪的小数
解答:这是因为因为浮点数在计算机内部是以二进制形式存储的,某些十进制小数无法精确表示。因此,直接运算可能会导致不精确的结果。
解决方法
这里给出三种简单的处理方法
方法一:四舍五入
使用Math.round()对结果进行四舍五入
以上述代码为例进行修改:
public class TestDouble { public static void main(String args[]) { System.out.println("0.05 + 0.01 = " + Math.round((0.05 + 0.01)100.0)/100.0); System.out.println("1.0 - 0.42 = " + Math.round((1.0 - 0.42)100.0)/100.0); System.out.println("4.015 * 100 = " + Math.round((4.015 * 100)100.0)/100.0); System.out.println("123.3 / 100 = " + Math.round((123.3 / 100)1000.0)/1000.0); } }
结果如下图:

注意:直接使用Math.round时只保留整数
方法二:使用BigDecimal 类
`import java.math.BigDecimal;
import java.math.RoundingMode;

public class BigDecimalRoundExample {

public static void main(String[] args) {
    double num = 0.5 + 0.1;
    BigDecimal bd = new BigDecimal(Double.toString(num));
    BigDecimal x = bd.setScale(2, RoundingMode.HALF_UP);//2表示要保留的小数位数

    System.out.println(x); 
}

}
`
结果:
0.06
三.出四则运算题目
一家软件公司程序员二柱的小孩上了小学二年级,老师让家长每天出30道四则运算题目给小学生做。
代码如下:
import java.util.;//导入java.util中的所有包
public class Mathtitle {
public static void main(String[] args) {
//输出30道题目
for(int i = 0;i<30;i++){
System.out.print(i+1+",");//去掉ln防止自动换行
getTitle();
}
}
public static void getTitle(){
//获取俩个随机数
Random random = new Random();
int r1 = 0, r2 = 0;
r1 = random.nextInt(100);
r2 = random.nextInt(100);
//定义一个包含四则运算符的数组
char[] arr = {'+','-','','/'};
//随机获取一个运算符
int num;
char operation;
num = random.nextInt(4);
//输出一道题目
System.out.println(r1+" "+arr[num]+" "+r2+" =");

}
}
运行结果:(每次结果随机)
1,50 - 16 =
2,32 / 9 =
3,76 - 20 =
4,91 - 26 =
5,51 * 73 =
6,66 + 4 =
7,78 + 34 =
8,64 + 80 =
9,71 * 53 =
10,61 - 28 =
11,14 + 62 =
12,93 - 93 =
13,69 / 19 =
14,46 - 23 =
15,52 - 92 =
16,83 / 89 =
17,21 - 98 =
18,24 + 77 =
19,0 + 22 =
20,72 - 2 =
21,71 * 83 =
22,70 + 93 =
23,35 + 80 =
24,21 * 54 =
25,25 / 69 =
26,93 / 30 =
27,57 * 73 =
28,5 + 83 =
29,81 / 10 =
30,0 / 81 =

进程已结束,退出代码为 0
四.+在Java中的使用
阅读以下代码,输出结果是什么?
`public class Test {

public static void main(String[] args) {
    int X=100;
    int Y=200;
    System.out.println("X+Y="+X+Y);
    System.out.println(X+Y+"=X+Y");      

}
}`
运行结果:

为什么会有这样的输出结果?
这是因为在System.out.println()语句中‘+’有连接作用和作为运算符俩种作用,根据前后的内容会有不同的用法。
对于System.out.println("X+Y="+X+Y);
‘"X+Y="’是一个字符串,后面的+号会直接将这个字符串与后面的数据连接,当计算机编译到下一个加号时X已经当作数据输出了,这时+号仍然会默认为连接符,直接紧随其后打印出Y的值。
而对于System.out.println(X+Y+"=X+Y");
先执行‘X+Y’,因为加号前后都是数据,这时便会直接计算X+Y,之后的加号继续起连接作用输出=X+Y。

标签:四则运算,System,枚举,println,Size,合集,public,out
From: https://www.cnblogs.com/zyh-828/p/18436534/2024-9-28

相关文章

  • 出四则运算题
    一家软件公司程序员二柱的小孩上了小学二年级,老师让家长每天出30道四则运算题目给小学生做。代码如下:importjava.util.;//导入java.util中的所有包publicclassMathtitle{publicstaticvoidmain(String[]args){//输出30道题目for(inti=0;i<30;i++){System.out.pr......
  • 结对项目:四则运算自动生成程序
    [github地址]https://github.com/kkrInblU/3222004510.githttps://github.com/115any/3222004512.git这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13230......
  • 软件工程结队项目:基于C++实现的自动生成小学四则运算的命令行程序
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13230这个作业的目标<运用C++实现四则运算法则的命令行程序>团队成员1李梓灏3122004695团队成员2吴......
  • 基于递归下降解析器的四则运算题生成器
    结对项目本次项目的GitHub位置:https://github.com/EIiasK/Eliask/tree/main/3122004566/Exercise_Generator项目成员及github地址郭人诵github地址:https://github.com/EIiasK/Eliask何其浚github地址:https://github.com/hugh143/hugh143这个作业属于哪个课程......
  • 51c嵌入式~电路~合集6
    一、单片机中用二极管实现不同电压的输出用二极管的单向导电性可以设计出好玩、实用的电路。    分享本文,分析限幅电路和钳位电路,是如何用二极管来实现的。限幅电路VIN大于等于0.7V,二极管正向导通。此时,VOUT会被钳位在0.7V上。    而当VIN小于0.7V时二极管是截止状态,在负半......
  • 【软考机考问答】—软考机考问答大合集
    软考自2023年下半年全部科目由笔试改为机考,很多年应试生刚接触机考考试形式会感到很陌生,为了方便考生应对软考机考,以下将有关于软考机考问答进行汇总,帮助广大考生顺利进行考试! 2023年下半年计算机技术与软件专业技术资格(水平)考试有关工作调整的通告1.软考机考有模拟系统吗?2.软考机......
  • 利用反射扫描枚举生成数据字典数据
    在开发过程中经常遇到既需要维护枚举来完成各种条件判断,又需要维护数据字典供前端使用,维护数据字典的另一个用处是可以修改数据字典的label而无需调整代码,但是这种两边维护的方式非常浪费人力资源,甚至有时部署程序忘了维护数据字典导致线上环境出现无法正常显示等问题。为解......
  • 枚举类型的基本用法(动手动脑)
    仔细阅读示例:EnumTest.java,运行它,分析运行结果?代码如下:`publicclassEnumTest{publicstaticvoidmain(String[]args){ Sizes=Size.SMALL; Sizet=Size.LARGE; //s和t引用同一个对象? System.out.println(s==t); //是原始数据类型吗? System.out.println(s.getCl......
  • 四则运算题目的生成
    四则运算题目的生成github地址:https://github.com/gomevie/gomevie/tree/main这个作业属于哪个课程广工计院计科34班软工这个作业要求在哪里作业要求这个作业的目标生成数学四则运算的练习题和答案作业成员陈国威PSP表格PSP2.1PersonalSoftwarePro......
  • 51c自动驾驶~合集31
    #大语言模型会成为自动驾驶的灵丹妙药吗人工智能(AI)在自动驾驶(AD)研究中起着至关重要的作用,推动其向智能化和高效化发展。目前AD技术的发展主要遵循两条技术路径:模块化和端到端。模块化将驾驶任务分解为感知、预测、规划和控制等模块,并分别进行训练。由于模块之间的训练目标不一致,综......