槃星—第3天任务—JAVA薪资转化工具

JAVA实战训练营Day.3 ——“小试牛刀”

目录

前言

一、Day.3的目标

二、任务所涉及的知识点(参考资料)

1.Java中变量的声明与使用

2.Java中Scanner类的使用方法

3.Java格式化输出

4.Java DecimalFormat的主要功能及使用方法

三、开始实战

1.用户输入月薪,计算日薪(每月22个工作日)和年薪(一年13薪)

2.三种方法使用Java实现两数交换

a.使用第三个变量进行已有两个变量值的交换

b.通过数学方式(两数相加保存和值)解决问题

 c.使用异或,通过两异或保存两数状态

3.解析四位正整数并求个位之和

四、总结



前言

 Java可以用来写高大上的服务器应用,但今天我们另辟蹊径,来写一些日常小工具,哈哈哈,没错,真就用牛刀杀鸡(今晚吃鸡,大吉大利OVO)。



一、Day.3的目标

Java实现薪资转化器,完成以下目标:

1.用户输入月薪,计算日薪(每月22个工作日)和年薪(一年13薪)

2.三种方法使用Java实现两数交换

a.使用第三个变量进行已有两个变量值的交换

b.通过数学方式(两数相加保存和值)解决问题

c.使用异或,通过两异或保存两数状态

3.解析四位正整数并求个位之和


二、任务所涉及的知识点(参考资料)

1.Java中变量的声明与使用

(同学可以先看一下这篇博客,强烈推荐)

https://blog.csdn.net/lxp18850413505/article/details/79482114?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163540901816780262563533%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163540901816780262563533&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-79482114.pc_search_all_es&utm_term=java%E5%8F%98%E9%87%8F%E7%B1%BB%E5%9E%8B&spm=1018.2226.3001.4187https://blog.csdn.net/lxp18850413505/article/details/79482114?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163540901816780262563533%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163540901816780262563533&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-79482114.pc_search_all_es&utm_term=java%E5%8F%98%E9%87%8F%E7%B1%BB%E5%9E%8B&spm=1018.2226.3001.4187https://blog.csdn.net/lxp18850413505/article/details/79482114?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163540901816780262563533%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163540901816780262563533&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-79482114.pc_search_all_es&utm_term=java%E5%8F%98%E9%87%8F%E7%B1%BB%E5%9E%8B&spm=1018.2226.3001.4187

2.Java中Scanner类的使用方法

https://blog.csdn.net/qq_40164190/article/details/81917208?ops_request_misc=&request_id=&biz_id=102&utm_term=Java%E4%B8%ADScanner%E7%B1%BB%E7%9A%84%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-81917208.nonecase&spm=1018.2226.3001.4187https://blog.csdn.net/qq_40164190/article/details/81917208?ops_request_misc=&request_id=&biz_id=102&utm_term=Java%E4%B8%ADScanner%E7%B1%BB%E7%9A%84%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-81917208.nonecase&spm=1018.2226.3001.4187https://blog.csdn.net/qq_40164190/article/details/81917208?ops_request_misc=&request_id=&biz_id=102&utm_term=Java%E4%B8%ADScanner%E7%B1%BB%E7%9A%84%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-81917208.nonecase&spm=1018.2226.3001.4187

3.Java格式化输出

https://blog.csdn.net/qq_44111805/article/details/112850550?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163540640616780357263712%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163540640616780357263712&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-112850550.pc_search_all_es&utm_term=java%E6%A0%BC%E5%BC%8F%E5%8C%96%E8%BE%93%E5%87%BA&spm=1018.2226.3001.4187https://blog.csdn.net/qq_44111805/article/details/112850550?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163540640616780357263712%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163540640616780357263712&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-112850550.pc_search_all_es&utm_term=java%E6%A0%BC%E5%BC%8F%E5%8C%96%E8%BE%93%E5%87%BA&spm=1018.2226.3001.4187https://blog.csdn.net/qq_44111805/article/details/112850550?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163540640616780357263712%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163540640616780357263712&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-112850550.pc_search_all_es&utm_term=java%E6%A0%BC%E5%BC%8F%E5%8C%96%E8%BE%93%E5%87%BA&spm=1018.2226.3001.4187

4.Java DecimalFormat的主要功能及使用方法

https://blog.csdn.net/evangel_z/article/details/7624503?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163540655116780269835548%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163540655116780269835548&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-7624503.pc_search_all_es&utm_term=java+decimalformat%E7%B1%BB%E5%BC%95%E7%94%A8&spm=1018.2226.3001.4187https://blog.csdn.net/evangel_z/article/details/7624503?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163540655116780269835548%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163540655116780269835548&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-7624503.pc_search_all_es&utm_term=java+decimalformat%E7%B1%BB%E5%BC%95%E7%94%A8&spm=1018.2226.3001.4187https://blog.csdn.net/evangel_z/article/details/7624503?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163540655116780269835548%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163540655116780269835548&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-7624503.pc_search_all_es&utm_term=java+decimalformat%E7%B1%BB%E5%BC%95%E7%94%A8&spm=1018.2226.3001.4187

三、开始实战

1.用户输入月薪,计算日薪(每月22个工作日)和年薪(一年13薪)

不多说,直接上代码:

import java.text.DecimalFormat;
import java.util.Scanner;//引入Scanner类
public class salay {


    public static void main(String[] args){
        System.out .println("***薪资转换工具v1.0***");
        System.out .println("请输入月薪(人民币):");
        Scanner sc=new Scanner(System.in);

        double mouthSalary=sc.nextDouble();//将月薪定义为scan
        System.out.format("您的日薪: ¥%,.2f",mouthSalary/22);//因为目标简单,所以直接使用数学方法完成
        System.out.format("您的年薪: ¥%,.2f",mouthSalary*13);//注意任务要求保留后两位小数,且有千分符
    }
    private static int scan() {
        Scanner scan=new Scanner(System .in);
        return scan.nextInt();
    }
}

运行演示:

  第一个任务很简单,直接用最简单的数学思路完成。

日薪=月薪/22

年薪=月薪*13

(注意保存小数点后两位)

至此任务1完成

2.三种方法使用Java实现两数交换

我们先来回答下面两个问题

1)变量使用前没有初始化可以吗?

2)如果有多个赋值运算时程序会怎么处理?

答:

1)不行,Java中每个变量必须先声明再使用。

详情大家可以参考下面这篇博文:

https://blog.csdn.net/weixin_41989775/article/details/103849945?utm_source=app&app_version=4.14.0&code=app_1562916241&uLinkId=usr1mkqgl919blenhttps://blog.csdn.net/weixin_41989775/article/details/103849945?utm_source=app&app_version=4.14.0&code=app_1562916241&uLinkId=usr1mkqgl919blenhttps://blog.csdn.net/weixin_41989775/article/details/103849945?utm_source=app&app_version=4.14.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

(图片来自上述博文)

这篇博文详细列举了这些变量,得出以下规则:

成员变量只声明未初始化在类初始化时会赋予默认值可以直接使用;

局部变量必须赋值才可以使用,如果局部变量未赋值,编译无法通过。

2)我们实践出真知

(实践是检验真理的唯一标准)

代码:

public class test
{
    public static void main(String[] args){
        int  x,y,z;
        x=y=z=8;
        System.out.println(x+","+y+","+z);
    }
}

运行:

我们发现x,y,z的赋值都是8,它实质上进行了如下变化:

OK,明白了这两个问题我们再继续。

a.使用第三个变量进行已有两个变量值的交换

代码:

class Scratch {
    public static void main(String[] args) {
        int  x=3,y=9;
        System.out.format("交换前: x:%d,y:%d%n",x,y);
        int temp=x;
        x=y;
        y=temp;
        System.out.format("交换后: x%d,y:%d%n",x,y);
    }
}

运行:

b.通过数学方式(两数相加保存和值)解决问题

代码:

class Scratch {
    public static void main(String[] args) {
        int  x=3,y=9;
        System.out.format("交换前: x:%d,y:%d%n",x,y);
        x=x+y;
        y=x-y;
        x=x-y;
        System.out.format("交换后: x:%d,y:%d%n",x,y);
    }
}

运行:

 c.使用异或,通过两异或保存两数状态

代码:

class Scratch {
    public static void main(String[] args) {
        int  x=3,y=9;
        System.out.format("交换前: x:%d,y:%d%n",x,y);
        x=x^y;
        y=x^y;
        x=x^y;
        System.out.format("交换后: x:%d,y:%d%n",x,y);
    }
}

运行:

 我们来看一下这个变化过程:

至此任务2完成

3.解析四位正整数并求个位之和

代码:

import java.util.Scanner;//引入Scanner类

public class gwh {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入一个位整数:");
        long n = input.nextLong();
        long result = sumDigits(n);
        System.out.println("n"+result);
    }
    public static long sumDigits(long n){
        long result = 0;
        for(; n >= 1 ; n /= 10){//使用”%“来提取数字,用“/”去掉提取出来的数字。循环提取,直到所有位数都提取完为止
            result += n % 10;
        }
        return result;
    }
}

运行:

核心思想:

使用”%“来提取数字,用“/”去掉提取出来的数字。循环提取,直到所有位数都提取完为止。

这样即使超过四位也可以完美运行。

示例:

至此任务3完成


四、总结

今天的任务主要是Java基础及运算,还是比较简单的,但如何巧妙的设计运算,用最少的代码来更好的实现目标是一个值得我们思考的问题。还有最重要一点是一定要多实践!熟能生巧!实践是检验真理的唯一标准!

(完结撒花)

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用Java自带的XML解析器和反射机制来将XML字符串转化Java对象。下面是一个例子: 假设我们有以下的XML字符串: ```xml <Person> <Name>John Doe</Name> <Age>30</Age> </Person> ``` 我们想要将它转化为一个Person对象,Person类的定义如下: ```java public class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } ``` 可以使用Java自带的XML解析器和反射机制来实现转化: ```java import java.io.StringReader; import java.lang.reflect.Field; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.xml.sax.InputSource; public class XmlToObject { public static void main(String[] args) throws Exception { String xml = "<Person><Name>John Doe</Name><Age>30</Age></Person>"; // 创建解析器 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); // 解析XML字符串 InputSource is = new InputSource(new StringReader(xml)); Document doc = builder.parse(is); // 获取根节点 Element root = doc.getDocumentElement(); // 创建Person对象 Person person = new Person(); // 遍历所有子节点,并通过反射设置属性值 for (int i = 0; i < root.getChildNodes().getLength(); i++) { Node node = root.getChildNodes().item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { String name = node.getNodeName(); String value = node.getTextContent(); Field field = Person.class.getDeclaredField(name.toLowerCase()); field.setAccessible(true); if (field.getType() == int.class) { field.set(person, Integer.parseInt(value)); } else { field.set(person, value); } } } // 输出Person对象的属性值 System.out.println(person.getName()); System.out.println(person.getAge()); } } ``` 运行结果: ``` John Doe 30 ``` 这个例子只是一个简单的示例,实际应用中可能需要更复杂的XML结构和Java对象。但是基本思路是一样的:通过XML解析器解析XML字符串,然后通过反射机制设置Java对象的属性值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dr.Waverly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值