2024/9/28日 动手动脑

本次动手动脑包含多个题,我将逐一进行重写。
第一个,Enum测试:

点击查看代码
//20234023 张一衡
import java.util.Random;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Size s=Size.SMALL;
        Size t=Size.LARGE;
        //s和t引用同一个对象?
        System.out.println(s==t);  //false
        //是原始数据类型吗?
        System.out.println(s.getClass().isPrimitive());//false
        //从字符串中转换
        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};
//分析:
//使用 == 比较枚举常量时,比较的是它们的引用,因此 s 和 t 是不同的引用,返回 false。
//在JAVA中,枚举类型是对象类型,因此可以用 getClass() 方法检查其类型,但它不是原始数据类型,返回 false。
//通过 valueOf 方法可以将字符串转换为对应的枚举常量,且多个变量可以引用同一个枚举实例。
//可以使用 values() 方法获得所有枚举常量,并进行遍历。
第二个,浮点数计算。
点击查看代码
//20234023 张一衡
import javax.swing.*;
import java.math.BigDecimal;
import java.util.Random;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        String []num1={"0.05","1.0","4.015","123.3"};
        String []num2={"0.01","0.42","100","100"};
        BigDecimal[]bd1=new BigDecimal[4];
        BigDecimal[]bd2=new BigDecimal[4];
        for(int i=0;i<num1.length;i++){
            bd1[i]=new BigDecimal(num1[i]);
            bd2[i]=new BigDecimal(num2[i]);
        }
//在这里选择使用BigDecimal类来处理精度损失问题
        System.out.println("BigDecimal---->String:");
        System.out.println("0.05 + 0.01 = "+bd1[0].add(bd2[0]));
        System.out.println("1.0 - 0.42 = "+bd1[1].subtract(bd2[1]));
        System.out.println("4.015 * 100 = "+bd1[2].multiply(bd2[2]));
        System.out.println("123.3 / 100 = "+bd1[3].divide(bd2[3]));
        
        System.out.println("Double:");
        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));
    }
}
//double和float在内存中是以二进制形式存储的,它们遵循IEEE 754标准。由于某些十进制数(例如0.1、0.2等)在二进制中无法精确表示,这会造成误差。
//当使用double进行各种浮点运算时(尤其是多次加减乘除),微小的误差可能会累积,导致最终结果显著偏离理论值。
//BigDecimal类提供了一个高精度的数值表示方式,能够精确表示任意大小的数字,包括小数,避免了双精度浮点数的不精确问题。
//当用字符串构造BigDecimal对象时,如new BigDecimal("0.1"),该字符串表示的是一个确切的值,因此可以避免因浮点表示引起的误差。
第三个,两个数的计算--消息框形式
点击查看代码
//20234023 张一衡
import javax.swing.*;
import java.util.Random;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        String input_1 = JOptionPane.showInputDialog(null, "请输入第一个数:",
                "输入", JOptionPane.PLAIN_MESSAGE);
        String input_2 = JOptionPane.showInputDialog(null, "请输入第二个数:",
                "输入", JOptionPane.PLAIN_MESSAGE);
        int output = Integer.parseInt(input_1) + Integer.parseInt(input_2);
        JOptionPane.showMessageDialog(null, "The sum is ->" + output,
                "输入", JOptionPane.PLAIN_MESSAGE);
    }
}
第四个,关于输出问题。
点击查看代码
//20234023 张一衡
//以下代码的输出结果是什么?
int X=100;
int Y=200;
System.out.println("X+Y=+X+Y);
System.out.println(X+Y+=X+Y")
为什么会有这样的输出结
果?
import java.util.Random;import java.util.Scanner,
public class Main {
public static void main(Stringlargs){
int X=100;
int Y=200:
System.out.println("X+Y="+X+Y);
//这段代码在处理时会先处理字符串的链接,
//"X+Y="+X将"X+Y="和 X的值(100)连接成一个字符串结果为"X+Y=100"
//然后,这个字符串再与丫的值(200)连接,结果为"X+Y=100200"
//这里的操作顺序是字符串连接优先于算术运算。
System.out.println(X+Y+"=X+Y");
//在这一行,X+Y首先被计算,结果为 100+200=300.
//然后,将 300 和字符串=X+Y"连接,得到结果"300=X+Y"。
	}
}

以及第五个,四则运算题

点击查看代码
//20234023 张一衡
import java.util.Random;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
    Random rand = new Random();
    Scanner sc = new Scanner(System.in);
    String []symbol={"+","-","*","/"};
    int count=0;
    while(count<=30) {
        int num1=rand.nextInt(100);
        int num2=rand.nextInt(100);
        int temp=rand.nextInt(4);
        int num3=0;
        if(symbol[temp].equals("+")){
            num3=num1+num2;
        }else if(symbol[temp].equals("-")){
            num3=num1-num2;
        }else if(symbol[temp].equals("*")){
            num3=num1*num2;
        }else if(symbol[temp].equals("/")){
            num3=num1/num2;
        }
        System.out.print(num1+" "+symbol[temp]+" "+num2+" = "+num3);
        System.out.println();
        count++;
    }
    }
}
posted @   Moonbeamsc  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
返回顶端
点击右上角即可分享
微信分享提示