java博客作业(一) 您所在的位置:网站首页 java双重for循环 java博客作业(一)

java博客作业(一)

2023-03-29 08:27| 来源: 网络整理| 查看: 265

一、前言

题目集一

知识点:if 判断、for 循环、双重循环、输入输出语句、数据计算处理、格式化输出(保留两位小数、四舍五入取整数等)、制表符 \t 的使用、字符串处理、String类查找重复字符、字符串删减、数组查重、判断素数、GPS数据处理、求定积分等。

题量:较多

难度:难易交叉

题目集二

知识点:数据类型的转换、基础语法、判断闰年、求下一天

题量:一般

难度:一般

题目集三

知识点:类与方法设计、封装、LocalDate类型运用、boolean型数据、使用数组存放信息、求下n天以及两日期间相差天数

题量:少

难度:较难

 

二、设计与分析

题目集一

7-6 统计一个子串在整串中出现的次数

最开始看到这道题人挺懵的,怎么统计字符串里面一部分出现的次数?我应该把它们分成一个个字符放到数组里面,然后判断计算吗?打开课本看到String类相关的内容,才发现Java已经为我们提供了诸多处理String类数据的方法,根据课本给出的方法,我想到以下思路:String类里面的indexOf( )方法使我可以轻松得到字符在字符串中的位置,也就是说我现在处理字符串就如同处理数组,只需要通过下标增加“遍历”字符串,从而算出子串在整串出现的次数即可。而String类里面还特别提供了substring( )方法以方便我们获取子串。所以我用indexOf( b, x)判断是否包含子串,并返回子串下标,之后用substring(x+b.length())截取整串后面的部分,循环判断,得到子串次数。

源码如下:

1 import java.util.Scanner; 2 public class Main { 3 public static void main(String[] args){ 4 Scanner input = new Scanner(System.in); 5 String a = input.nextLine(); 6 String b = input.nextLine(); 7 int x=0; 8 int count=0; 9 while((x=a.indexOf(b,x))!=-1){ 10 a=a.substring(x+b.length()); 11 count++; 12 } 13 System.out.print(count); 14 } 15 } View Code

 

7-7 有重复的数据

这题要求我们在一大堆数据中判断是否存在重复数据,返回“YES” or "No",看到此题第一眼当然是觉得小case,连重复次数都不需要计算,只要有一个数据重复一次便可以轻松结束,然而当我自信满满的掏出双重循环时,才被测试点狠狠的打了脸,“运行超时”,这意料之外却又情理之中,可我该如何将代码进行改进呢?怎样才能提高运行速度呢?对于此类大量数据的处理问题,我想到了曾经处理的判断素数问题,为了减少运行负担采用了二分法对数据进行处理。对于现在这道题,如果我想使用二分法,那就得先排序,可是之前在C语言学习的排序简直是复杂无比,想想应该会适得其反。于是便止步放弃了,我还需要一定的时间对此进行分析。因此最终还是提交了超时的二重循环代码。

二重循环源码如下:

1 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String[] args){ 5 Scanner input = new Scanner(System.in); 6 int i; 7 int j; 8 int k=0; 9 int n = input.nextInt(); 10 int[] number=new int[n]; 11 for(i=0;i=1&&side1=1&&side2=1&&side3


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有