【Java刷题进阶】基础入门篇⑦

简介: 【Java刷题进阶】基础入门篇⑦

第一题:十进制数转二进制数


题目描述


控制台随机输入一个十进制数,请你将它转换为二进制数并输出

输入描述:

控制台随机输入的十进制正整数

输出描述:

该十进制数转换的二进制数字

示例


输入:9

输出:1001

题解


import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        //write your code here......
        System.out.println( Integer.toBinaryString(num));
    }
}


第二题:掷骰子游戏


题目描述


开发一个掷骰子游戏,即每次运行程序时,产生一个[1,6]之间的随机整数(关于seed的问题可以参考题解)。

输入描述:

随机数种子

输出描述:

[1,6]之间的随机整数

示例


输入: 100

输出: 2

题解


import java.util.Random;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt()) {
            int seed = scanner.nextInt(); //输入随机数种子
            Random random = new Random(seed); //用随机种子进行随机算法
            System.out.println(random.nextInt(6) + 1); //随机生成1-6地数字
        }
    }
}


第三题:求绝对值,平方根,对数,正弦值


题目描述


编写函数求出任意数的绝对值,平方根,对数,正弦值

输入描述:

任意数字

输出描述:

任意数的绝对值,平方根,对数,正弦值(请直接使用Math类的方法进行运算,不考虑精度问题)

示例


输入: 4

输出:

4.0

2.0

1.3862943611198906

-0.7568024953079282

题解


import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        double num = scanner.nextDouble();
        //write your code here......
        System.out.println(Math.abs(num));
        System.out.println(Math.sqrt(num));
        System.out.println(Math.log(num));
        System.out.println(Math.sin(num));
    }
}


第四题:输出某一年的各个月份的天数


题目描述


输入任意年份,输出该年份各月天数(请使用 Calendar 类中的方法)

输入描述:

任意年份(int类型整数)

输出描述:

x年1月:yy天

x年2月:yy天

x年3月:yy天

x年4月:yy天

x年5月:yy天

x年6月:yy天

x年7月:yy天

x年8月:yy天

x年9月:yy天

x年10月:yy天

x年11月:yy天

x年12月:yy天(x为输入的任意年份,yy为当月天数)

示例


输入: 2021

输出:

2021年1月:31天

2021年2月:28天

2021年3月:31天

2021年4月:30天

2021年5月:31天

2021年6月:30天

2021年7月:31天

2021年8月:31天

2021年9月:30天

2021年10月:31天

2021年11月:30天

2021年12月:31天

题解


import java.util.Scanner;
import java.util.Calendar;
public class Main {
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        int year = console.nextInt();
        //write your code here......
        Calendar calendar = Calendar.getInstance();
        for (int month = 1; month <= 12; month++) {
            calendar.set(year, month, 0);
            System.out.println(year+"年"+month+"月:"+
                    calendar.get(calendar.DAY_OF_MONTH)+"天");
        }
    }
}


第五题:日期换算


题目描述


已知,纽约时间比北京时间慢12小时,请根据用户输入的北京时间输出相应的纽约时间,若用户输入错误的月份或日期等信息则将其顺加。例如用户输入2021 13 32 14 43 54则生成北京时间为:2022-02-01 14:43:54 纽约时间为:2022-02-01 02:43:54

输入描述:

一组字符串,年,月,日,时,分,秒用空格隔开,如果用户数据输入不正常,应输出“您输入的数据不合理”

输出描述:

北京时间为:年-月-日 时:分:秒

纽约时间为:年-月-日 时:分:秒

示例


输入: 2021 09 08 14 38 05

输出:

北京时间为:2021-09-08 14:38:05

纽约时间为:2021-09-08 02:38:05

输入: 2021 09 08 14 38

输出: 您输入的数据不合理

题解


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Scanner in = new Scanner(System.in);
        String str1 = in.nextLine();       
        String[] arr = str1.split(" "); //依据空格分开
        if(arr.length != 6) //不足6项,不合理的输入
            System.out.println("您输入的数据不合理");
        else{
            //将字符串组合成日期格式
            String temp = arr[0] + "-" + arr[1] + "-" + arr[2] + " " + arr[3] + ":" + arr[4] + ":" + arr[5];
            Date date = sdf.parse(temp); //将字符串转换成日期
            System.out.println("北京时间为:" + sdf.format(date.getTime())); //格式化后输出
            System.out.println("纽约时间为:" + sdf.format(date.getTime() - (long) 12 * 60 * 60 * 1000)); //减去12h
        }
    }
}
目录
相关文章
|
16天前
|
JSON NoSQL Java
Redis入门到通关之Java客户端SpringDataRedis(RedisTemplate)
Redis入门到通关之Java客户端SpringDataRedis(RedisTemplate)
33 0
|
16天前
|
Java
Java编程语言入门指南
Java编程语言入门指南
16 1
|
1天前
|
SQL Java 关系型数据库
零基础轻松入门Java数据库连接(JDBC)
零基础轻松入门Java数据库连接(JDBC)
6 0
|
1天前
|
存储 安全 算法
Java一分钟之-Java集合框架入门:List接口与ArrayList
【5月更文挑战第10天】本文介绍了Java集合框架中的`List`接口和`ArrayList`实现类。`List`是有序集合,支持元素重复并能按索引访问。核心方法包括添加、删除、获取和设置元素。`ArrayList`基于动态数组,提供高效随机访问和自动扩容,但非线程安全。文章讨论了三个常见问题:索引越界、遍历时修改集合和并发修改,并给出避免策略。通过示例代码展示了基本操作和安全遍历删除。理解并正确使用`List`和`ArrayList`能提升程序效率和稳定性。
6 0
|
2天前
|
Java API 开发工具
java与Android开发入门指南
java与Android开发入门指南
10 0
|
3天前
|
Java
Java一分钟之-类与对象:面向对象编程入门
【5月更文挑战第8天】本文为Java面向对象编程的入门指南,介绍了类与对象的基础概念、常见问题及规避策略。文章通过代码示例展示了如何定义类,包括访问修饰符的适当使用、构造器的设计以及方法的封装。同时,讨论了对象创建与使用时可能遇到的内存泄漏、空指针异常和数据不一致等问题,并提供了相应的解决建议。学习OOP需注重理论与实践相结合,不断编写和优化代码。
26 1
|
4天前
|
Java 编译器 对象存储
java一分钟之Java入门:认识JDK与JVM
【5月更文挑战第7天】本文介绍了Java编程的基础——JDK和JVM。JDK是包含编译器、运行时环境、类库等的开发工具包,而JVM是Java平台的核心,负责执行字节码并实现跨平台运行。常见问题包括版本不匹配、环境变量配置错误、内存溢出和线程死锁。解决办法包括选择合适JDK版本、正确配置环境变量、调整JVM内存参数和避免线程死锁。通过代码示例展示了JVM内存管理和基本Java程序结构,帮助初学者更好地理解JDK和JVM在Java编程中的作用。
16 0
|
11天前
|
设计模式 算法 安全
Java多线程编程实战:从入门到精通
【4月更文挑战第30天】本文介绍了Java多线程编程的基础,包括线程概念、创建线程(继承`Thread`或实现`Runnable`)、线程生命周期。还讨论了线程同步与锁(同步代码块、`ReentrantLock`)、线程间通信(等待/通知、并发集合)以及实战技巧,如使用线程池、线程安全设计模式和避免死锁。性能优化方面,建议减少锁粒度和使用非阻塞算法。理解这些概念和技术对于编写高效、可靠的多线程程序至关重要。
|
12天前
|
算法 Java 大数据
Java从入门到精通学习报告
Java从入门到精通学习报告
20 1
|
12天前
|
Java 索引
JAVA刷题之数组的总结和思路分享
JAVA刷题之数组的总结和思路分享