第五周课程总结&试验报告(三)

Java String类实践与加密算法
本文通过多个实验深入探讨了Java中String类的使用,包括字符串操作、统计特定字符和子串出现次数、字符串倒序输出等。此外,还介绍了如何使用简单的位移算法进行字符串加密,并分析了字符串中不同类型字符的数量。

实验三 String类的应用

  • 实验目的
  • 掌握类String类的使用;
  • 学会使用JDK帮助文档;
  • 实验内容

1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码、结果截图。)

(1).统计该字符串中字母s出现的次数。

实验代码:

package 实验三;

public class zifu1 {
    public static void main(String[] args) {
        String str = "this is a test of java";
            int count=0;//用来计数
            for(int i =0;i<str.length();i++){
                char c = str.charAt(i);
                if(c == 's'){
                    count++;
                }
            }
        System.out.println("字母s出现的次数为:"+count);
    }
}

 实验结果:

 

 (2).统计该字符串中子串“is”出现的次数。

实验代码:

package 实验三;

public class zifu2 {
    public static void main(String[] args) {
        int num = beginIndex("This is a test of Java","is");  
          System.out.println("字符串is出现的次数:"+num);
 }
 
    public static int beginIndex(String str,String substr){
         int count = 0;
         for(int i=0;i<str.length()+1-substr.length();i++) {
               if(str.substring(i, substr.length()+i).equals(substr)) {
                    count++;
               }
          }
          return count; 
    }

}

 实验结果:

 

 

(3).统计该字符串中单词“is”出现的次数。

实验代码:

package 实验三;

public class zifu3 {
    public static void main(String[] args) {
        int num = beginIndex("This is a test of Java","is");  
          System.out.println("字符串is出现的次数:"+num);
 }
 
    public static int beginIndex(String str,String substr){
         int count = 0;
         for(int i=0;i<str.length()+1-substr.length();i++) {
               if(str.substring(i, substr.length()+i).equals(substr)) {
                   i=i-1;
                   char c = str.charAt(i);
                 if(c == ' '){
                    count++;
                 }
                 i=i+1;
               }
          }
          return count; 
    }

}

 实验结果:

 

 

(4).实现该字符串的倒序输出。

实验代码:

package 实验三;

public class zifu4 {
    public static void main(String[] args){
        StringBuffer sb=new StringBuffer("this is a test of java");
        System.out.println(sb.reverse().toString());
    }
}

 实验结果:

 

 

2.请编写一个程序,使用下述算法加密或解密用户输入的英文字串。要求源代码、结果截图。

实验代码:

 

package 实验三;
import java.util.Scanner;

public class key {
    public static void main(String[] args){
        System.out.print("请输入一个字符串:");
        Scanner sc=new Scanner(System.in);
        String str=sc.nextLine();
        char c[]=str.toCharArray();
        char d[]=new char[50];int j=0;
        for(int i = c.length-3;i<c.length;i++) {
                d[j]=c[i];
                j++;
        }
        for(int i=0;i<c.length-3;i++){
            d[j]=c[i];
            j++;
        }
            System.out.print(d);
    
     }
}

 实验结果:

 

 

 

 

3.已知字符串“ddejidsEFALDFfnef2357 3ed”。输出字符串里的大写字母数,小写英文字母数,非英文字母数。

实验代码:

package 实验三;

public class zifu_number {
    public static void main(String[] args){
        String str="ddejidsEFALDFfnef2357 3ed";
        int big=0;int small=0;int other=0;
        for(int i =0;i<str.length();i++){
            char c = str.charAt(i);
            if(c>='a'&&c<='z'){
                small++;
            }else if(c>='A'&&c<='z'){
                big++;
            }else{
                other++;
            }
        }
        System.out.println("大写字母个数为:"+big);
        System.out.println("小写字母个数为:"+small);
        System.out.println("其它字符个数为:"+other);
    }
}
    

 实验结果:

实验总结:

第一大题是考察我们对String类的掌握及使用,在做题中用到的有Length():获取当前字串长度,charAt(int index):获取当前字符串对象下标index处的字符,substring():从指定位置开始一直取到尾进行字符串的截取,以及在网上找到的StringBuffer():实现对字符串的逆序。题目不难,找到合适的string类即可。

第二大题困扰了我蛮久的,最开始我和室友的思路是改变它们的ASCII值然后输出,结果只是改变它们的位置而已,前者要简单啊,问了助教,老师要我们用后者的思想去解决,开始呢我们的思路是循环进行字符位置的替换,但是问题就是把位置1上的元素1赋给位置位置4后,循环到位置4时,元素1的位置又会发生改变,这个方法行不通,想了很多改进方法,参考了其它同学的答案,判断出原码的后三位,将它们赋给新数组的前三位,一一输出,在将剩下的元素意义存入新数组的对应位置,进行输出,发现还是有问题,后来还是借鉴了其它同学的答案。觉得还是用另一个数组替换的思想比我自己想的要对点,是我自己想的不够全面啊。

第三大题最简单,获取字符串长度,用for循环判断,进行累加即可。

学习总结:

继承:在Java类中只允许单一继承,即一个子类只可以继承一个父类,且子类将继承父类的非私有属性和方法,但父类与子类只能一对一,即一个父类下面只有一个子类,但是那个子类可以作为父类进行下一次的继承。

方法的重载与复写:在重载中,方法名称相同,参数的类型或者个数不同,而覆盖都是相同的。覆盖只有发生在父类与子类之间,而重载可以发生在同一类中。

super():

1.super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。
2.super()和this()均需放在构造方法内第一行,因此与this不能同时出现。

 

转载于:https://www.cnblogs.com/Jay-h/p/11594865.html

维建模技术借助先进的图像处理手段,将二维影像转化为立体空间数据。在多种实现路径中,双摄像头视觉方案与编码光投影技术具有代表性。前者通过布置两个成像单元从不同方位采集画面,依据视差原理与空间几何关系推算深度数据;后者则向目标表面投射特定光栅,通过解析光栅形变反推维轮廓。相位偏移法作为光栅技术的重要分支,采用多步渐进式光场调制策略,通过记录连续相位变化获取亚像素级维信息。同步采用的互补二进制编码机制,通过优化光强分布模式有效解决相位跳变问题,显著提升重建数据的连续性。 成像系统的参数标定是维数据生成的基础环节,需通过专用算法确定镜头焦距、像主点坐标及光学畸变系数等核心参数。立体校正则依据双相机空间几何关系,对采集图像进行投影变换,使对应像点分布于同一水平扫描线上,大幅降低立体匹配复杂度。在光栅系统中,相位对齐技术通过建立像素级相位映射关系,将二维相位场转换为维坐标;而在立体视觉中,视差分析通过比对双视图对应像素偏移量,构建深度映射矩阵。最终通过点云融合算法,将离散空间坐标整合为连续曲面模型,该技术体系在工业检测、数字娱乐及沉浸式交互等领域具有重要应用价值。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
内容概要:本文围绕&ldquo;风光制氢合成氨系统优化研究&rdquo;展开,重点介绍了基于Matlab代码实现的并网与离网模式下风能、光能耦合制氢进而合成氨的系统容量配置与调度优化方法。研究涵盖可再生能源波动性、系统能量转换效率、设备容量规划及运行调度策略等关键问题,通过数学建模与优化算法(如智能优化、模型预测控制等)实现系统经济性与稳定性的平衡。文中多次提及&ldquo;复现&rdquo;字样,表明部分内容旨在还原已有研究成果,并提供完整的代码资源支持仿真验证。同时,文档列举了大量相关研究主题,形成一个涵盖电力系统、综合能源、状态估计、机器学习等多个方向的技术资源集合。; 适合人群:具备一定电力系统、能源工程或自动化背景的研究生、科研人员及工程技术人员,熟悉Matlab/Simulink环境者更佳;适合从事新能风光制氢合成氨系统优化研究(Matlab代码实现)源系统建模与优化研究的专业人士。; 使用场景及目标:①开展风光耦合制氢及合成氨系统的容量规划与运行调度研究;②复现已发表论文中的优化模型与算法;③构建综合能源系统仿真平台,提升科研效率与代码实践能力。; 其他说明:文档附带百度网盘链接,提供YALMIP工具包及其他完整资源下载,便于读者直接调用求解器进行优化计算,建议结合实际需求选择相应案例进行学习与拓展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值