文档章节

Java String 字符串 应用

DaDa-da
 DaDa-da
发布于 2017/05/17 20:13
字数 1838
阅读 11
收藏 0
点赞 0
评论 0

 

  1. 用自己的算法实现startsWith和endsWith功能。

/**
 * 1. 用自己的算法实现startsWith和endsWith功能。
 * @author ztw
 *
 */
public class Practice01 {

    public static void main(String[] args) {

        String str = "qwewrewr";
//      boolean temp = str.endsWith("r");
//      System.out.println(temp);

        /*
         * startsWith
         */
        char[] arr = str.toCharArray();
        char c = 'r';
        if(arr[0]==c){
            System.out.println("true");
        }else{
            System.out.println("false");
        }
        /*
         * endsWith
         */
        if(arr[arr.length-1]==c){
            System.out.println("true");
        }else{
            System.out.println("false");
        }
    }
}

输出结果:

false
true

2.采用字符的移位方式实现字符文本加密解密。

import java.util.Scanner;

/**
 * 2.采用字符的移位方式实现字符文本加密解密。
 * @author ztw
 *
 */
public class Practice02 {

    public static void main(String[] args) {
        System.out.println("请输入一个字符串");
        Scanner sc =new Scanner(System.in);
        String str1 = new String();
        str1=sc.nextLine();        
        System.out.println(str1.replaceAll("a", "1.")
                .replaceAll("b", "2.").replaceAll("c", "3.")
                .replaceAll("d", "4.").replaceAll("e", "5.")
                .replaceAll("f", "6.").replaceAll("g", "7.")
                .replaceAll("h", "8.").replaceAll("i", "9.")
                .replaceAll("j", "10.").replaceAll("k", "11.")
                .replaceAll("l", "12.").replaceAll("m", "13.")
                .replaceAll("n", "14.").replaceAll("o", "15.")
                .replaceAll("p", "16.").replaceAll("q", "17.")
                .replaceAll("r", "18.").replaceAll("s", "19.")
                .replaceAll("t", "20.").replaceAll("u", "21.")
                .replaceAll("v", "22.").replaceAll("w", "23.")
                .replaceAll("x", "24.").replaceAll("y", "25.")
                .replaceAll("z", "26."));
    }
}

输出结果:

请输入一个字符串
asdsddffg
1.19.4.19.4.4.6.6.7.

3.验证是随机生成4位验证码,由用户输入并否输入正确, 如果输入错误就生成新的验证码让用户重新输入,最多输入5次!

import java.util.Random;
import java.util.Scanner;


/**
 * 3.验证是随机生成4位验证码,由用户输入并否输入正确,
 * 如果输入错误就生成新的验证码让用户重新输入,最多输入5次
 * @author ztw
 *
 */
public class Practice03 {

    public static void main(String[] args) {
        String str="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        char[]arr=new char[4];//定义一个长度是4的char型数组
        Random sj=new Random();
        System.out.println("验证码是:");
        for(int i=0;i<4;i++)
        {
            arr[i]=str.charAt(sj.nextInt(61));//从str中随机截取4个单个字符并赋值给arr这个数组存放
        }
        System.out.println(arr);
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入验证码");

        String a=new String(arr);//把数组转换成字符串
        //定义输入次数
        for(int j=0;j<5;j++)
        {
            if(sc.nextLine().equals(a))
            {

                System.out.println("验证码输入正确");

            }
            else
            {
                System.out.println("验证码输入有误,请重新输入");
                if(j<=3)
                {


                    System.out.print("请输入验证码");
                    for(int i=0;i<4;i++)
                    {
                        arr[i]=str.charAt(sj.nextInt(61));//从str中随机截取4个单个字符并赋值给arr这个数组存放
                    }
                    System.out.println(arr);
                    a=new String (arr);

                }
                else
                {
                    System.out.println("输入有误,对不起,5次机会已用完");
                }
            }
        }
    }
}

输出结果:

验证码是:
AVA8
请输入验证码
AVA8验证码输入正确

/**
 * 4.获取一个字符串在另一个字符串中出现的次数
    思路:
    1.定义一个计数器。
    2.获取子串第一次出现的位置
    3.从第一次出现的位置后剩余的字符串中继续获取子串出现的位置,每获取一次计数器加1
    4,当获取不到时,计数完成
 * @author ztw
 *
 */
public class Practice04 {

    public static void main(String[] args) {

        String str1 = "asdasdas";
        String str2 = "as";
        //1.定义一个计数器。
        int total = 0;
        for (String temp = str1; temp!=null && 
                temp.length()>=str2.length();) {
            //2.获取子串第一次出现的位置
            if(temp.indexOf(str2) == 0){
                //3.从第一次出现的位置后剩余的字符串中继续获取子串出现的位置,每获取一次计数器加1
                total ++;
            }
            temp = temp.substring(1);
            System.out.print(temp+", ");
        }
        //4,当获取不到时,计数完成
        System.out.println("计数完成:"+total);
    }
}

 

输出结果:

sdasdas, dasdas, asdas, sdas, das, as, s, 计数完成:3

 

/**
 * 5.获取两个子串中最大相同子串
     思路:
      1.将短的哪个子串按照长度递减的方式获取到
      2.将每次获取到的子串去长串中判断是否包含,如果包含,已经找到
 * @author ztw
 *
 */
public class Practice05 {

     public static String getMaxSubString(String s1,String s2)  {  
            String max = "",min = "";  
            max = (s1.length()>s2.length())?s1: s2;  
            min = (max==s1)?s2: s1;       
//          sop("max="+max+"...min="+min);  
            for(int x=0; x<min.length(); x++)  
            {  
                for(int y=0,z=min.length()-x; z!=min.length()+1; y++,z++)  
                {  
                    String temp = min.substring(y,z);                 
                    sop(temp);  
                    if(max.contains(temp))//if(s1.indexOf(temp)!=-1)  
                        return temp;  
                }  
            }  
            return "";  
        }  
        public static void main(String[] args)   
        {  
            String s1 = "ab";  
            String s2 = "cvhellobnm";  
            sop(getMaxSubString(s2,s1));  
        }  
        public static void sop(String str)  
        {  
            System.out.print(str+", ");  
        }  
}

 

输出结果:

ab, a, b, b,

/**
 * 6、写一个方法判断一个字符串是否对称
 * @author ztw
 *
 */
public class Practice06 {


    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        String str = input.next();//接收任意字符串

        isOk1(str);                        
}
    /**
     * 判断字符串是否对称的方法(一)
     * 通过取取索引对应值来进行一一比对
     * @param str
     */
    public static void  isOk1(String str){
            boolean result = true;
            int count =(str.length()-1)/2;
            for (int x=0;x<=count;x++ ){

                    if(str.charAt(x)!=str.charAt(str.length()-1-x)){
                            result = false;
                            break;
                    }
            }
            if(!result)
                    System.out.println("该字符串是不对称的");
            else
                    System.out.println("该字符串是对称的");
    }


    /*
     * public static void main(String[] args){
                Scanner input = new Scanner(System.in);
            String str = input.next();//接收任意字符串
                   if (isOk2(str)==true) {
                        System.out.println("真,对称!");
                }else{
                        System.out.println("假,不对称!");
                }

        }
       /**
         * 方法二
         * 通过String加强类中的取反方法reverse获取其逆向值
         * 再与原字符串相比是否相等!
         * 等于则返回TRUE,否则FALSE
         * @param str
         * @return
         */
    /*
        public static boolean isOk2(String str){
                StringBuffer sb = new StringBuffer(str);
                String str2 = sb.reverse().toString();
                return str.equals(str2);
        }
     */
}

 

输出结果:

asdsa
该字符串是对称的

/**
 * 
    9、编写一个程序,将下面的一段文本中的各个单词的字母顺序翻转,

    “To be or not to be",将变成"oT eb ro ton ot eb."。
 * @author ztw
 *
 */
public class Practice09 {

    public static void main(String[] args) {

        String str = "To be or not to be";
        String[] str2 = str.split(" ");

        for (int i = 0; i < str2.length; i++) {

            char[] ci = str2[i].toCharArray();
            System.out.print(" ");

            for (int j = ci.length-1; j >= 0 ; j--) {
                System.out.print(ci[j]);
            }
        }
    }
}

 

/**
 * 10、已知字符串:"this is a test of java". 

    按要求执行以下操作:
    (1) 统计该字符串中字母s出现的次数
    (2) 取出子字符串"test"
    (3) 用多种方式将本字符串复制到一个字符数组Char[] str中.
    (4) 将字符串中每个单词的第一个字母变成大写, 输出到控制台。
    (5) 用两种方式实现该字符串的倒叙输出。(用StringBuffer和for循环方式分别实现)
    (6) 将本字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的额英文单词,并输出到控制台
 * @author ztw
 *
 */
public class Practice10 {


    public static void main(String[] args) {

        String str = "this is a test of java";
//      (1) 统计该字符串中字母s出现的次数
        int count = 0;
        for (int i = 0; i < str.length(); i++) {
            if(str.charAt(i)=='s'){
                count++;
            }
        }
        System.out.println("字符串中字母s出现的次数:"+count);

//      (2) 取出子字符串"test"
        String str2 = (String) str.subSequence(10, 14);
        System.out.println(str2);
//      (3) 用多种方式将本字符串复制到一个字符数组Char[] str中.
        char[] c = str.toCharArray();
        System.out.println(c);

        for (int i = 0; i < c.length; i++) {
            System.out.print(c[i]);
        }
        System.out.println();
//      (4) 将字符串中每个单词的第一个字母变成大写, 输出到控制台。
            str=str.toLowerCase();
            String[] tt=str.split(" ");
            System.out.println(tt.length);
            for(int i=0;i<tt.length;i++)
            {   
                //加个判断,长度大于0的
                if(tt[i].length()>0){
                    System.out.print(String.valueOf(tt[i].charAt(0)).toUpperCase());
                    System.out.print(tt[i].substring(1)+" ");
                }
            }
            System.out.println();
//      (5) 用两种方式实现该字符串的倒叙输出。(用StringBuffer和for循环方式分别实现)
            StringBuffer sb = new StringBuffer(str);
            System.out.println(sb.reverse().toString());

            char[] c3 = str.toCharArray();
            for (int i = c3.length-1; i >= 0 ; i--) {
                System.out.print(c3[i]);
            }
            System.out.println();

//      (6) 将本字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的额英文单词,并输出到控制台
            String[] str5=str.split(" ");
            for (int i = 0; i < str5.length; i++) {
                System.out.print(str5[i]+", ");
            }
    }
}

 

输出结果:

字符串中字母s出现的次数:3
test
this is a test of Java
this is a test of java
6
This Is A Test Of Java
avaj fo tset a si siht
avaj fo tset a si siht
this, is, a, test, of, java,

 

本文转载自:

共有 人打赏支持
DaDa-da
粉丝 0
博文 11
码字总数 2717
作品 0
洛阳
后端工程师
Java开发每日复盘2018_0515

今天跟大家分享几个Java小细节: 【1】「for each循环的写法」 【2】「常量 final 写法细节」 【3】「类型转换之String转其他」 下面我们来一个一个说: 【1】「for each循环的写法」 Java中:...

ZeroOSTalk ⋅ 05/16 ⋅ 0

Java开发每日复盘2018_0514

今天主要跟大家分享3个部分: 一、「Java的核心机制」 二、「Java命名规范」 三、「Java数据类型相关」 下面我们来一个一个的说: 「Java核心机制」 Java是一种强制面向对象的解释型语言(O...

ZeroOSTalk ⋅ 05/14 ⋅ 0

Java压缩技术(一) ZLib

应好友需要,整理一下Java的压缩算法,先从ZLib开始。 相关链接: Java压缩技术(一) ZLib Java压缩技术(二) ZIP压缩——Java原生实现 Java压缩技术(三) ZIP解压缩——Java原生实现 Ja...

村长大神 ⋅ 2014/11/05 ⋅ 0

用Java这么多年,这些秘密你知道吗?

摘要: 如果您是Java开发人员,那么这些问题可能会让您在某个时刻头痛不已。继续阅读以了解如何处理这5个棘手的秘密。 Java是一个拥有悠久历史的大型语言。在二十多年的时间里,语言中蕴含着...

James- ⋅ 05/11 ⋅ 0

MyBatis传入参数与parameterType

传入简单类型 Java代码: MAPPER : 2. 传入List JAVA代码: 单独传入list时,foreach中的collection必须是list,不不管变量的具体名称是什么。比如这里变量名为idList, collection却是list。 ...

为了美好的明天 ⋅ 05/17 ⋅ 0

使用G1 GC,降低内存消耗20%

由于Web服务API调用(例如JSON,REST,SOAP,...),外部数据源调用(SQL,从DB拿到的数据,...),文本解析,文本构建等等,如今的Java应用程序会执行大量的字符串操作。 因此,字符串对象可...

ImportSource ⋅ 05/11 ⋅ 0

编写高性能 Java 代码的最佳实践

摘要:本文首先介绍了负载测试、基于APM工具的应用程序和服务器监控,随后介绍了编写高性能Java代码的一些最佳实践。最后研究了JVM特定的调优技巧、数据库端的优化和架构方面的调整。以下是译...

这篇文章 ⋅ 前天 ⋅ 0

java编程语言知识要点学习java基础英语单词表

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰 ⋅ 05/19 ⋅ 0

Java多线程学习(二)synchronized关键字(2)

系列文章传送门: Java多线程学习(一)Java多线程入门 Java多线程学习(二)synchronized关键字(1) java多线程学习(二)synchronized关键字(2) Java多线程学习(三)volatile关键字 Ja...

一只蜗牛呀 ⋅ 04/16 ⋅ 0

做几道基础的Java测试题,看看最近有进步吗?欢迎来学习

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

启示录是真的 ⋅ 05/24 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vue使用mockjs

在使用vue开发的时候,一直疑惑与mockjs怎么用,开了mockjs的开发文档,还是一脸蒙蔽,无从下手!mockjs在前后端分离开发上进行模拟数据,是不可避掉的一环。在网上看了一些博文还有查阅了其...

JamesView ⋅ 29分钟前 ⋅ 0

解决问题的思路

1.相对来说,程序逻辑解决问题的思路应该更加趋向于通过逻辑结构来解决问题,而不是通过更小的类级别和方法级别的改进 2.类级别和方法级别的改进需要的技术能力更高一点

th778899 ⋅ 35分钟前 ⋅ 0

HTTP请求状态及jQuery AJAX请求异常处理

上一周调优一个项目的Js部分,其中一个严重的问题就是在页面初始化数据时,没有对异常进行处理, 导致Loading一直在等待中,无提示无处理。在用户体验上很不好,即使网络条件无法保证,在出错...

临江仙卜算子 ⋅ 36分钟前 ⋅ 0

error code 1874. innodb is in read only mode--报错解决

参考网页 https://zhidao.baidu.com/question/746894876932022292.html https://blog.csdn.net/shushugood/article/details/80226767 问题背景 创建了一个数据库然后想删除,因为自己本机性能......

karma123 ⋅ 37分钟前 ⋅ 0

JVM系列:jinfo命令详解

jinfo全称Java Configuration Info,主要作用是实时查看和调整JVM配置参数。 一.查看JVM参数 用法:jinfo -flag <name> PID 示例: # jinfo -flag MaxMetaspaceSize 11180 # -XX:MaxMetaspac......

Jacktanger ⋅ 41分钟前 ⋅ 0

exportfs命令、NFS客户端问题、FTP介绍、使用vsftpd搭建ftp

1. exportfs命令 一般情况下重启服务器上nfs服务时,需把客户端上的挂载先卸载掉,以免进程后面杀不掉。当客户端服务器很多时,操作起来就比较麻烦。此时可以使用exportfs命令重新加载下。 ...

laoba ⋅ 51分钟前 ⋅ 0

基于Python的信用评分卡模型分析

信用风险计量体系包括主体评级模型和债项评级两部分。主体评级和债项评级均有一系列评级模型组成,其中主体评级模型可用“四张卡”来表示,分别是A卡、B卡、C卡和F卡;债项评级模型通常按照主...

火力全開 ⋅ 52分钟前 ⋅ 0

执行make命令时报错g++: Command not found

执行make命令时报错g++: Command not found 2016年10月24日 12:31:29 阅读数:4366 朋友安装node时遇到的问题 报错截图: 其实很简单只需要安装一下 yum -y install gcc automake autoconf l...

rootliu ⋅ 52分钟前 ⋅ 0

Loongnix(龙芯)系统,优盘安装指南

U盘安装分为两种方式:"usb disk" 及 "usb cd"。其中usb cd是将usb disk做为usb光驱使用。 usb disk安装步骤: 需要准备一个大小超过3.5G的U盘,格式化ext3格式 下载安装光盘镜像xxx.iso,将...

gugudu ⋅ 55分钟前 ⋅ 0

HTML5中meta属性的使用详解

meta属性在HTML中占据了很重要的位置。如:针对搜索引擎的SEO,文档的字符编码,设置刷新缓存等。虽然一些网页可能没有使用meta,但是作为正规军,我们还是有必要了解一些meta的属性,并且能...

guorongjin ⋅ 59分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部