当前位置: 首页 > news >正文

Java—— 五道算法水题

第一题

 需求:

包装类:键盘录入一些1~100之间的整数,并添加到集合中。直到集合中所有数据和超过200为止

代码实现:

import java.util.ArrayList;
import java.util.Scanner;public class Test1 {public static void main(String[] args) {//键盘录入一些1~100之间的整数,并添加到集合中。//直到集合中所有数据和超过200为止//定义集合ArrayList<Integer> list = new ArrayList<>();//键盘录入Scanner sc = new Scanner(System.in);while (true) {String numStr = sc.nextLine();int num = Integer.parseInt(numStr);if (num < 1 || num > 100) {System.out.println("输入数字范围有误,请重新输入");continue;}list.add(num);//调用方法计算集合中所有数据和int sum = getSum(list);if (sum > 200) {break;}}for (int i = 0; i < list.size(); i++) {System.out.print(list.get(i) + " ");}}//定义方法计算集合中所有数据和private static int getSum(ArrayList<Integer> list) {int sum = 0;for (int i = 0; i < list.size(); i++) {int num = list.get(i);sum = sum + num;}return sum;}
}

第二题

需求:

自己实现parselnt方法的效果,将字符串形式的数据转成整数。
要求:
字符串中只能是数字不能有其他字符
最少一位,最多10位
0不能开头

代码实现: 

import java.util.Scanner;public class Test2 {public static void main(String[] args) {//自己实现parselnt方法的效果,将字符串形式的数据转成整数。//要求://字符串中只能是数字不能有其他字符//最少一位,最多10位//0不能开头Scanner sc = new Scanner(System.in);String regex = "[1-9]\\d{0,9}";String str;while (true) {System.out.println("请输入字符串");str = sc.nextLine();//1234boolean flag = str.matches(regex);if (flag) {break;}System.out.println("字符串不符合要求");}int result = 0;for (int i = 0; i < str.length(); i++) {char c = str.charAt(i);int num = c - '0';result = result * 10 + num;}System.out.println(result);//1234System.out.println(result + 1);//1235}
}

第三题

需求:

定义一个方法实现toBinaryString方法的效果,将一个十进制整数转成字符串表示的二进制
除基取余法:
不断的除以基数(几进制,基数就是几)得到余数,
直到商为0,再将余数倒着拼起来即可。

代码实现:

public class Test3 {public static void main(String[] args) {//定义一个方法自己实现toBinaryString方法的效果,将一个十进制整数转成字符串表示的二进制//除基取余法//不断的除以基数(几进制,基数就是几)得到余数,//直到商为0,再将余数倒着拼起来即可。//自定义方法System.out.println(toBinaryString(123));//1111011//Integer中的方法System.out.println(Integer.toBinaryString(123));//1111011}public static String toBinaryString(int num) {//定义StringBuilder便于拼接StringBuilder sb = new StringBuilder();while (num != 0) {//得到余数int result = num % 2;//将余数倒着拼起来相当于每一个数都拼在前面sb.insert(0, result);//除以基数num = num / 2;}return sb.toString();}
}

第四题

需求:

请使用代码计算你出生到现在经历多少天,用JDK7和JDK8两种方式完成 

代码实现:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.Date;public class Test4 {public static void main(String[] args) throws ParseException {//请使用代码计算你出生到现在经历多少天,用JDK7和JDK8两种方式完成//JDK7//利用字符串定义出生的日期String birthStr = "2000-3-5";//解析为日期对象SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date birth = sdf.parse(birthStr);//或得毫秒值long birthTime = birth.getTime();//获得现在时间Date now = new Date();long nowTime = now.getTime();//相减long time = nowTime - birthTime;System.out.println(time / 1000 / 60 / 60 / 24);//9183//JDK8//利用工具类ChronoUnit//获得现在时间LocalDate ld1 = LocalDate.now();//获得出生的时间LocalDate ld2 = LocalDate.of(2000, 3, 5);long result = ChronoUnit.DAYS.between(ld2, ld1);System.out.println(result);//9183}
}

第五题

需求:

判断任意的一个年份是闰年还是平年
要求:用JDK7和JDK8两种方式判断
提示:二月有29天是闰年

代码实现:

import java.time.LocalDate;
import java.util.Calendar;public class Test5 {public static void main(String[] args) {//判断任意的一个年份是闰年还是平年//要求:用JDK7和JDK8两种方式判断//提示://二月有29天是闰年//思路://让3月1日减一天,看是否是29号//JDK7Calendar c = Calendar.getInstance();//设置时间为某年3月1日/*c.set(Calendar.YEAR,2000);c.set(Calendar.MONTH,2);//Calendar月份的范围为0-11c.set(Calendar.DAY_OF_MONTH,1);*/c.set(2000, 2, 1);//将其减1天c.add(Calendar.DAY_OF_MONTH, -1);//判断是否是29号int day = c.get(Calendar.DAY_OF_MONTH);if (day == 29) {System.out.println(c.get(Calendar.YEAR) + "是闰年");//2000是闰年}//JDK8//设置时间为某年3月1日LocalDate ld1 = LocalDate.of(2000, 3, 1);//LocalDate月份的范围为1-12//将其减1天LocalDate ld2 = ld1.minusDays(1);//判断是否是29号int dayOfMonth = ld2.getDayOfMonth();if (dayOfMonth == 29) {System.out.println(ld2.getYear() + "是闰年");//2000是闰年}//JDK8有判断是否是闰年的方法//true:是闰年,false:不是闰年boolean flag = ld1.isLeapYear();if (flag) {System.out.println(ld1.getYear() + "是闰年");//2000是闰年}}
}

http://www.xdnf.cn/news/164341.html

相关文章:

  • 强化学习基础
  • Python AI图像生成方案指南
  • Axure疑难杂症:全局变量典型应用及思考逻辑(玩转全局变量)
  • 剑指offer经典题目(六)
  • 做的一些题目的答案和自己的一些思考
  • LangChain 中的 Task(任务) 主要通过 生成器(Generator) 实现,而非传统的迭代器(Iterator)
  • Ardunio学习
  • 推论阶梯——AI与思维模型【81】
  • Redis 数据分片三大方案深度解析与 Java 实战
  • JavaScript原生实现简单虚拟列表(列表不定高)
  • 【Agent python实战】ReAct 与 Plan-and-Execute 的融合之道_基于DeepSeek api
  • 快速上手c语言
  • 栈与堆的演示
  • C++ 为什么建议类模板定义在头文件中,而不定义在源文件中
  • 对卡尔曼滤波的理解和简单示例实现
  • 数据库原理(1)
  • N字形上升形态选股代码如何编写?
  • 平面连杆机构(上)
  • 定制一款国密浏览器(11):SM2算法的椭圆曲线参数定义
  • 4月25日日记(补)
  • 6.Geometric Intersection (几何求交)- Preliminary
  • 用高德API提取广州地铁线路(shp、excel)
  • Docker Compose--在Ubuntu中安装Docker compose
  • Java 异常处理全解析:从基础到自定义异常的实战指南
  • Java社区门诊系统源码 SaaS医院门诊系统源码 可上线运营
  • 深入理解JavaScript异步编程:从回调地狱到Promise/Async优雅解决方案
  • Eigen核心矩阵/向量类 (Matrix, Vector, Array)
  • 循环神经网络RNN---LSTM
  • 函数递归之青蛙跳台阶+汉诺塔
  • 网络原理 - 8