java自学DAY05

字符串练习

案例调整字符串

 采用字符拼接方式:

package Tests;

import java.util.Scanner;

public class tset09 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串A:");
        String strA = sc.next();
        System.out.println("请输入一个字符串B:");
        String strB = sc.next();
        //旋转并对比
        boolean res = checkStr(strA,strB);
        System.out.println(res);
    }
    public static boolean checkStr(String strA,String strB){
        for (int i = 0; i < strA.length(); i++) {
            strA = roateStr(strA);
            if(strA.equals(strB))
                return true;
        }
        return false;
    }
    public static String roateStr(String str){
        String newStr = str.substring(1);
        char c = str.charAt(0);
        String returnString = newStr + c;
        return returnString;
    }
}

调整字符数组方式:

package Tests;

import java.util.Scanner;

public class tset09 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串A:");
        String strA = sc.next();
        System.out.println("请输入一个字符串B:");
        String strB = sc.next();
        //旋转并对比
        boolean res = checkStr(strA,strB);
        System.out.println(res);
    }
    public static boolean checkStr(String strA,String strB){
        for (int i = 0; i < strA.length(); i++) {
            strA = roateStr(strA);
            if(strA.equals(strB))
                return true;
        }
        return false;
    }
    public static String roateStr(String str){
//        String newStr = str.substring(1);
//        char c = str.charAt(0);
//        String returnString = newStr + c;
//        return returnString;
        char[] arr = str.toCharArray();
        char first = arr[0];
        //将数组中的字符依次前移
        for (int i = 1; i < arr.length; i++) {
            arr[i-1] = arr[i];
        }
        //将第一个字符拼接到最后
        arr[arr.length-1] = first;
        //String res = arr.toString();
        String res = "";
        for (int i = 0; i < arr.length; i++) {
            res = res + arr[i] ;
        }
        return res;
    }
}

 练习1 打乱字符串

package Tests;

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

public class test10 {
    public static void main(String[] args) {
        //输入一个字符串,打乱顺序并输出
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String str = sc.next();
        //打乱顺序
        String res = luanStr(str);
        System.out.println(res);
    }
    public static String luanStr(String str){
        //字符串转换为数组
        char[] arr = str.toCharArray();
        Random r = new Random();
        //字符串数组中依次的值 与 随机生成的索引值对应的字符 进行交换
        for (int i = 0; i < arr.length; i++) {
            int index = r.nextInt(arr.length);
            char temp = arr[i];
            arr[i] = arr[index];
            arr[index] = temp;
        }
        //交换后的arr为字符数组 所以要将其转换为字符串
        String res = "";
        for (int i = 0; i < arr.length; i++) {
            res = res + arr[i];
        }

        return res;
    }
}

 练习2随机验证码(四个字母 一个数字)

package Tests;

import java.util.Random;

public class test11 {
    public static void main(String[] args) {
        //TODO:生成随机四个字母 一个数字
        //1、定义一个数组存大小写字母
        char[] arr = new char[52];
        for (int i = 0; i < arr.length; i++) {
            //存小写字母
            if(i<=25){
                arr[i]= (char)(97+i);
            }else{
                arr[i] = (char)(65+i-26);
            }
        }
        //2、从数组里随机找四个字母
        Random r = new Random();
        String res = "";
        for (int i = 0; i < 4; i++) {
            int index = r.nextInt(52);
            res = res + arr[index];
        }
        int num = r.nextInt(10);
        //拼接一个数字,然后打乱顺序
        res = luanStr(res + num);
        System.out.println(res);


    }
    //3、打乱顺序
    public static String luanStr(String str){
        //字符串转换为数组
        char[] arr = str.toCharArray();
        Random r = new Random();
        //字符串数组中依次的值 与 随机生成的索引值对应的字符 进行交换
        for (int i = 0; i < arr.length; i++) {
            int index = r.nextInt(arr.length);
            char temp = arr[i];
            arr[i] = arr[index];
            arr[index] = temp;
        }
        //交换后的arr为字符数组 所以要将其转换为字符串
        String res = "";
        for (int i = 0; i < arr.length; i++) {
            res = res + arr[i];
        }

        return res;
    }
}

 练习3将给定两个字符串数字,转化为数字并相乘(不用Integer.parseInt(str))

package Tests;

import java.util.Scanner;

public class test12 {
    public static void main(String[] args) {
        //字符串给定两个数字
//        String num1 ="2" ;
//        String num2 ="456" ;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个数字:");
        String num1 = sc.next();
        System.out.println("请输入第二个数字:");
        String num2 = sc.next();
        System.out.println("他们的乘积为:");
        int num3 = toNum(num1);
        int num4 = toNum(num2);
        System.out.println(num3*num4);
    }
    public static int toNum(String str){
        char[] arr = str.toCharArray();
        int res=0;
        char[] numArr = {'0','1','2','3','4'};
        for (int i = 0; i < arr.length; i++) {
            int num =0;
            //将数字字符转化为对应的数字
            switch (arr[i]){
                case '0':
                    num = num + 0;
                    break;
                case '1':
                    num = num + 1;
                    break;
                case '2':
                    num = num + 2;
                    break;
                case '3':
                    num = num + 3;
                    break;
                case '4':
                    num = num + 4;
                    break;
                case '5':
                    num = num + 5;
                    break;
                case '6':
                    num = num + 6;
                    break;
                case '7':
                    num = num + 7;
                    break;
                case '8':
                    num = num + 8;
                    break;
                case '9':
                    num = num + 9;
                    break;
                default:
                    num = 0;
            }
            //将str转化为对应的数字 用循环控制乘以几个10
            for(int j = 1;j<arr.length-i;j++){
                num = num *10;
            }
            res = res +num;

        }
        return res;
    }


}
 ArrayList集合

集合长度可长可短,不能存基本数据类型,存引用数据类型。

ArrayList<String> array = new ArrayList<>();

 面向对象

工具类:1、类名见名知意  2、私有化构造方法 3、方法定义为静态

 static注意事项:

1、静态方法只能访问静态变量和静态方法。

2、非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和成员方法。

3、静态方法中是没有this关键字的。

继承

1、什么是继承?继承的好处?

继承是面向对象三大特征之一,可以让类与类之间产生父子关系。

可以把多个子类中重复的代码抽取到父类中,子类可以直接使用,减少代码冗余,提高代码复用性。

2、继承的格式

public class 子类 extends 父类 {}

3、继承后子类的特点

子类可以得到父类的属性和行为,子类可以使用。 子类可以在父类的基础上新增其他功能,子类更强大。

java只支持单继承,不支持多继承,但支持多层继承,java中所有的类都直接或者间接地继承于Object类。子类只能访问父类中非私有的成员。

 

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值