java练题笔记-DAY2

1· 字符串的反转

        主要在于循环要从尾开始,定义一个字符变量串变量,用于接受每个字符.

Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String result=sc.nextLine();
        System.out.println(reverse(result));
    }
    public static String reverse(String str){
        String result="";
        for(int i=str.length()-1;i>=0;i--){
            char c=str.charAt(i);
            result =result+c;
        }
        return  result;

2· 字符串的拼接

核心在于 设置一个字符串变量,使用循环将将数组元素分别加入字符串常量中.

public static void main(String[] args) {
        int arr[]={1,2,3};
        System.out.println(arrToString(arr));
    }

    private static String arrToString(int[] arr) {
        String a="[";
        for (int i = 0; i < arr.length-1; i++) {
            a=a+arr[i]+",";
        }
        a=a+arr[arr.length-1];
        return a+"]";
    }

3· 录入一个整数将其添加到数组中

核心在于得到整数位数,创建动态数组。

public static void main(String[] args) {
      //定义一个整数
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个整数");
        int sum=sc.nextInt();
        int temp=sum;
        //得到数组的长度
        int count=0;
        while(sum!=0){
            sum=sum/10;
            count++;
        }
        int arr[]=new int[count];
        //将每一位放入数组中
        int index=0;
        while(temp!=0){
            int ge=temp%10;
            temp=temp/10;
            arr[index]=ge;
            index++;
        }

        //输出验证
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
    }

4· 模拟发票金额的大小写转换

核心在于 一:分别创建一个能够得到 大写 字符数组 和 一个能够得到 单位 字符数组的数组,使其能够传出需要的大写字母与单位数组。

二:大量使用动态数组,值传递等知识,需要调试断点找出错误。

//创建 大写数字对应表
        char[] chs = {'零','一', '二', '三', '四', '五', '六', '七', '八', '九'};
        char[] cha={'佰','拾','万','仟','佰','拾','元'};
        Scanner sc = new Scanner(System.in);
        System.out.println("输入要取出的金额");
        int number = sc.nextInt();
            change(number,chs,cha);
    }

    public static void change(int number, char[] chs, char[] cha) {
        //求数字的长度
        int count = 0;
        int temp = number;
        while (number > 0) {
            number = number / 10;
            count++;
        }
        //定义数组,将拆分后的数字依次放入数组
        int arr[] = new int[count];
        for (int i = arr.length - 1; i >= 0; i--) {
            int a = temp % 10;
            temp = temp / 10;
            arr[i] = a;
        }
        //转换为大写
        for (int i = 0; i < arr.length; i++) {
            System.out.print(chs[arr[i]]);
        }
        System.out.println();
        //补齐够七位,够七位,直接用,不够七位创建新数组
        int all = arr.length;
        if (arr.length <= 7) {
            int arr1[] = new int[7];
            for (int i = 6; all > 0; i--, all--) {
                arr1[i] = arr[all - 1];
            }
            finalMethod(cha,arr1,chs);

        } else {
            System.out.println("数值过大,最多7位");
        }
    }
    
    //插入字符遍历
    public  static void finalMethod(char[] cha,int[] arr,char[] chs){
        for (int i = 0; i < arr.length; i++) {
            System.out.print(chs[arr[i]]);
            System.out.print(cha[i]);
        }
    }

5·统计字符串中大小写以及数字个数

核心在于 知道怎么判断大小写与数字的方法

注意 : 判断数字时,不要误用ASCII码。

public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入字符串");
        String a = sc.nextLine();
        int bigCount=0;
        int smallCount=0;
        int intCount=0;
        for (int i = 0; i < a.length(); i++) {
            char c=a.charAt(i);
            if(c>='A' && c<='Z'){
                bigCount++;
            }else if (c>='a' && c<= 'z'){
            smallCount++;
            }else if(c>='0' && c<='9'){
                intCount++;
            }
        }
        System.out.println("大写字母为:"+bigCount+
                "小写字母为:"+smallCount+
                "数字为:"+intCount);
    }

6· 遍历字符串

学会使用 charAt()方法

public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String s = sc.nextLine();
        for (int i = 0; i <s.length() ; i++) {
            char c=s.charAt(i);
            System.out.println(c);
        }

    }

7·定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生的学号,姓名各不相同。

要求1:再次添加一个学生对象,并在添加时进行学号的唯一判断;

要求2:添加完毕之后,遍历所有学生信息;

要求3:通过id删除学生信息,若存在,则删除;不存在,提示删除失败;

要求4:删除完毕之后,遍历所有学生信息

要求5:查询数组id为“xiaowang123”的学生,若存在,则他的年龄+1;

package DAY2.复杂对象数组;

public class studenrTest {
    public static void main(String[] args) {
        student arr[]=new student[3];
        student s1=new student(001,"张三",456);
        student s2=new student(002,"张si",2);
        student s3=new student(003,"张wu",1);
        arr[0]=s1;
        arr[1]=s2;
        arr[2]=s3;
        student s4=new student(004,"张6",3);
        //测试插入功能
        boolean flag=contain(arr,s4.getId());
        if(flag){
            System.out.println("当前id重复");
        }else{
            int a=getCount(arr);
            if(a>=arr.length){
               student[] arr1=creatArr(arr);
                arr1[a]=s4;

            }else{
                arr[a]=s4;
            }
        }
        //测试删除功能
        int temp=1;
        int index = getIndex(temp, arr);
        delete(arr,temp);
        //测试年龄增加功能
        int idTset=1;
        addAge(arr,idTset);
    }
        //判断是否存在
        public  static boolean contain(student[] arr,int id){

        for(int i=0;i<arr.length;i++){
            //依次获取数组里面的每一个学生对象
            student stu=arr[i];
            //获取数组中学生对象的id
            int sid=stu.getId();
            if(sid==id){
                return  true;
            }
        }
        return false;
        }
        //判断数组存入了几个元素
    public  static  int getCount(student[] arr){
        int count=0;
        for (int i = 0; i < arr.length; i++) {
            student stu=arr[i];
            if(stu!=null){
                count++;
            }
        }
        return count;
    }
    //创建新数组的方法
    public  static student[] creatArr(student[] arr){
        student arr1[]= new student[arr.length + 1];
        for (int i = 0; i < arr.length; i++) {
            arr1[i]=arr[i];
        }
        return arr1;

    }

    //遍历
        public static void bl(student[] stu) {
            for (int i = 0; i < stu.length; i++) {
                try {
                    student arr = stu[i];
                    System.out.println(arr.getId() + " " + arr.getName() + " " + arr.getAge() + " ");
                } catch (Exception e) {
                    System.out.println("");
                }
            }
        }



        //找到要操作元素对应的索引值
    public  static int getIndex(int s,student[] arr){
        for(int i=0;i<arr.length;i++){
            if(s==arr[i].getId()){
                return i;
            }
        }
        return -1;
    }

        //删除学生
    public  static void delete(student[] arr,int index){
        if(index>=0){
            arr[index]=null;
            bl(arr);
        }else{
            System.out.println("id不存在,删除失败");
        }
    }
    //年龄增加
    public static void addAge(student[] arr,int id){
        boolean contain = contain(arr, id);
        if(contain){
            int index = getIndex(id, arr);
            arr[index].setAge(arr[index].getAge()+1);
        }
    }
}

比较麻烦的题目,多次涉及到函数的相互调用,按着题目要求一步步完成即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值