JAVA课后作业
1.枚举值的foreach迭代:
public class Enum {
private enum MyEnum{
ONE,TWO,THREE
}
public static void main(String [] args) {
for(MyEnum value:MyEnum.values()) {
System.out.println(value);
}
}
}
这种foreach枚举迭代,无需知道具体枚举的数量,直接就可以按序枚举
2.两数相加的对话框展示
import javax.swing.JOptionPane; // import class JOptionPane
public class Enum {
// An addition program
public static void main( String args[] )
{
String firstNumberString,secondNumberString;
int number1,number2;
firstNumberString = JOptionPane.showInputDialog("Enter first integer");
secondNumberString = JOptionPane.showInputDialog("Enter second integer");
//字符串类型转化为整型
number1 = Integer.parseInt(firstNumberString);
number2 = Integer.parseInt(secondNumberString);
int sum = number1+number2;
JOptionPane.showMessageDialog(null, "This sum is "+ sum ,"Rssult",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}
第一次了解了JOptionPane这种在JAVA可以展示对话框的类,还有Integer.parseInt这种将字符串转化成整型的方法
3.精度损失测试
public class Enum {
public static void main(String[] args) {
double number1 = 123456789;
float number2 = (float) number1;
System.out.println(number1);
System.out.println(number2);
}
}在double类型强转成float类型时出现了精度损失,第一次的输出为1.23456789E8
第二次的输出为1.23456792E8
同理那个Int Long long类型转化成float和double类型的时候都会出现精度损失的问题
double数值进行计算时出现问题
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));
}
输出:
0.05 + 0.01 = 0.060000000000000005
1.0 - 0.42 = 0.5800000000000001
4.015 * 100 = 401.49999999999994
123.3 / 100 = 1.2329999999999999
我知道在计算机中所有的数据都是以二进制的方式存储的,所有的浮点型数据都是近似的值,所以
在小数类的计算时,精度是无法保证的
改进精度,使用BigDecimal类
import java.math.BigDecimal;
public class Enum {
public static void main(String[] args)
{
BigDecimal f1 = new BigDecimal("0.05");
BigDecimal f2 = BigDecimal.valueOf(0.01);
BigDecimal f3 = new BigDecimal(0.05);
System.out.println("下面使用String作为BigDecimal构造器参数的计算结果:");
System.out.println("0.05 + 0.01 = " + f1.add(f2));
System.out.println("0.05 - 0.01 = " + f1.subtract(f2));
System.out.println("0.05 * 0.01 = " + f1.multiply(f2));
System.out.println("0.05 / 0.01 = " + f1.divide(f2));
System.out.println("下面使用double作为BigDecimal构造器参数的计算结果:");
System.out.println("0.05 + 0.01 = " + f3.add(f2));
System.out.println("0.05 - 0.01 = " + f3.subtract(f2));
System.out.println("0.05 * 0.01 = " + f3.multiply(f2));
System.out.println("0.05 / 0.01 = " + f3.divide(f2));
}
}
在构建对象时使用String类型原因是,使用String类型可以精确的表示十进制的任何数字,而不会出现精度的损失,如果使用
double数据类型,则在创建BigDeCimal时穿进去的是一个double类型的近似值
字符串链接的相关注意:
public class Enum {
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");
}
}
二者输出不同,第一个输出是加了两个字符串,第二个是先计算二者的相加值,在加一个字符串,第一个相当于三个字符串,第二个相当于两个
- 随机数的生成
import java.util.Random;
public class Enum {
public static void main(String[] args)
{
Random random = new Random();
for(int i = 0;i < 30;i++) {
int number1 = random.nextInt(11)+1;
int number2 = random.nextInt(11)+1;
int middle = random.nextInt(4);
switch(middle) {
case 0:
System.out.println(number1+" + "+number2+" =");
break;
case 1:
System.out.println(number1+" - "+number2+" =");
break;
case 2:
System.out.println(number1+" * "+number2+" =");
break;
case 3:
if(number2==0) {
i--;
continue;
}else {
System.out.println(number1+" / "+number2+" =");
}
}
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端