实训java第四课 数组 等额本金还款 身份证最后一位验证码

    技术2022-05-20  31

    1,数组 分静态数组和动态数组 静态数组编译时初始化大小并赋值,动态数组运行时初始化大小,数组的初始化默认值是“零”,布尔值的false 在java底层也是0

    package com.tarena.day04; public class ArrayDemo { /** * 数组的默认初始化值为0 */ public static void main(String[] args) { int[] arr ; arr = new int[10]; arr[7] = 20013; System.out.println((char)arr[7]); arr = new int[]{3,4,56,7}; // System.out.println(arr[-3]); //错,越界 char[] chs = {'1','3','a','b','您','好'}; for(int i=0;i<chs.length;i++) if(chs[i] >= 'a' && chs[i] <= 'z') chs[i] = (char)(chs[i] - ('a'-'A')); System.out.println(chs); } } 2,数组的复制与扩展 其实java还是有指针的,数组名就类似于指针。声明一个数组名arr2指向原来的数组arr1,那么该arr2就该了原来的数组arr1。使用迭代可以给数组赋值。系统提供的API也可以给数组赋值,使用System.arraycopyf方法。这个方法是用C语言实现的所以效率就非常高,所以就让我联想到C语言的memcopy,我估计System.arraycopy底层就是用C的这个函数。数组的长度是不能改变的,可以使用变通的使用数组拓展数组空间,使用Arrays.copyOf方法,新生成一个数组仍掉原来的数组,这个方法的内部也是用arraycopy实现的。Arrays是java 6的API所以用以前版本编译会报错package com.tarena.day04; import java.util.Arrays; public class ArrayExpandDemo { /** * 数组的复制与扩展 */ public static void main(String[] args) { int[] arr = {1,2,3}; int[] arr2 = arr; System.out.println(arr[1]);// 2 System.out.println(arr2[1]);//2 arr2[1] = 3; System.out.println(arr[1]);// 3 System.out.println(arr2[1]);//3 //复制一个数组 int[] arr3 = new int[arr.length]; for(int i = 0;i<arr.length;i++) { arr3[i] = arr[i]; } arr[0] = 5; System.out.println(arr3[0]);//1 //复制数组的系统API int[] arr4 = new int[arr.length]; System.arraycopy(arr, 0, arr4, 0, arr.length);//性能好 C语言实现 //java 6 提供了信API int[] arr5 = Arrays.copyOf(arr, arr.length);//就是arraycopy实现的 //数组的动态扩展算法 //1 数组对象的长度是不可改变的 //2 变通的使用数组的副本扩展数组空间 arr = Arrays.copyOf(arr ,arr.length+1); System.out.println(arr.length);//4 System.out.println(arr[arr.length-1]);//0 System.out.println(arr2[0]); int[] arr6 = new int[arr.length * 2]; System.arraycopy(arr, 0, arr6, 0, arr.length); arr = arr6; System.out.println(arr.length); for (int i = 0; i < arr6.length; i++) { int x = arr6[i]; System.out.print(x+","); } System.out.println(); Arrays.fill(arr6, 8); System.out.println(Arrays.toString(arr6)); } }

    练习:等额本金还款代码

    package com.tarena.day04; import java.util.Scanner; public class Rate { /** * 利息 interest * 利率 interest rate * 贷款 loan * 月利率 mouthly interest rage * 期数 mouths * 还款 pay */ public static void main(String[] args) { Scanner console = new Scanner(System.in); System.out.println("贷款金额(万):"); int loan = console.nextInt();//18 System.out.print("年利率(%):");//5.6 double ir = console.nextDouble(); System.out.print("还款起数(月数):"); int mouths = console.nextInt(); double pay = (double)loan*10000 /mouths; //月还款金额 double mir = ir / 100/12;//月利率 double[] interest = new double[mouths];//每月的利息 for (int i = 0; i < interest.length; i++) { interest[i] = (loan*10000 - pay*i) *mir; } double sum =0.0; for (int i = 0; i < interest.length; i++) { sum += interest[i] +pay; System.out.println("第"+(i+1)+"个月还款"+ pay +"利息"+interest[i]); } System.out.println("还款总额为:"+sum); } }

    作业1:身份证验证码

    package day04; import java.util.Scanner; import java.util.Arrays; /** * 验证身份证号码的正确性 * */ public class IdCardDemo{ public static void main(String[] args){ System.out.println( verify("34052419800101001X")); } public static boolean verify(String id){ int[] mul={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; char[] ten={'1','0','X','9','8','7','6','5','4','3','2'}; int sum = 0; for (int i = 0; i < id.length() -1; i++) { int result = id.charAt(i)- '0'; result = result * mul[i]; sum += result; } if(id.charAt(17) == ten[sum ]) return true; return false; } }

    作业2:文字倒叙输出

    package day04; /** * 实现文字竖排 * */ public class Valign { public static void main(String[] args) { String str = "abcdefghijklmn"; String txt = valign(str, 5); System.out.println(txt); } public static String valign(String txt, int charPerCol) { int row = charPerCol; int col = txt.length()/charPerCol + 1+1; char[] chs = new char[row * col]; int z = 0; for (int i = col-1; i >= 0; i--) { //col for (int j = 0; j < row ; j++) { //row if(i == col-1) chs[j*col+i] ='/n'; else { if(z >= txt.length()) chs[j*col+i] = '.'; else chs[j*col+i] = txt.charAt(z); z++; } } } return new String(chs); } }


    最新回复(0)