java练习题

1、

package com.oupeng.exer;

/*某超市举办抽奖活动,中奖条件是会员卡号各位数字之和为16。
 * 会员输入自己的四位卡号,即可知是否中奖。
 * 如:中奖结果:true
 * 
 * 
 */
import java.util.Scanner;//1.导包
public class one {
    public static void main(String[] arg){
        Scanner scan = new Scanner(System.in);//2.实例化
        
        //3.调用Scanner类的相关方法
        System.out.print("请输入您的四位卡号:");
        int num = scan.nextInt();
        
        int qian = num / 1000;
        int bai = num / 100 % 10;
        int shi = num / 10 % 10;
        int ge = num % 10;
        int sum = ge + shi +bai + qian;
        
        if(sum == 16){
            System.out.println("恭喜你,中奖了!");
        }else{
            System.out.println("很遗憾,您未中奖!");
        }
        
        
    }

}
************************************************************************************************************************************************************************************
2、

package com.oupeng.exer;
import java.util.Scanner;//导包
/*
 * 今天周日(7),12天后周几?
 */
public class two {
    public static void main(String[] arg){
        Scanner scan = new Scanner(System.in);//实例化
        
        System.out.println("多少天以后:");
        int day = scan.nextInt();//调用
        int willday = day % 7 ;
        
        System.out.print(day + "天以后是周" + willday);
    }

}
************************************************************************************************************************************************************************************
3、
package com.oupeng.exer;
import java.util.Scanner;
/*闰年
 从键盘分别输入年、月、日,判断这一天是当年的第几天

        注:判断一年按是否是闰年的标准
            1)可以被4整除,但不可被100整除
        或
            2)可以被400整除
 */

public class three {
    public static void main(String[] arg){
        Scanner scan = new Scanner(System.in);

        System.out.println("请输入year:");
            int year = scan.nextInt();
        System.out.println("请输入month:");
            int month = scan.nextInt();
        System.out.println("请输入day:");
            int day = scan.nextInt();
            
            //定义一个变量来保存总天数
            int sumDays = 0;

            switch(month){
            case 12:
                sumDays += 30;
            case 11:
                sumDays += 31;
            case 10:
                sumDays += 30;
            case 9:
                sumDays += 31;
            case 8:
                sumDays += 31;
            case 7:
                sumDays += 30;
            case 6:
                sumDays += 31;
            case 5:
                sumDays += 30;
            case 4:
                sumDays += 31;
            case 3:
                //sumDays += 28;
                //判断year是否是闰年
                if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
                    sumDays += 29;
                }else{
                    sumDays += 28;
                }
            case 2:
                sumDays += 31;
            case 1:
                sumDays += day;
            }
            System.out.println(year + "年" + month + "月" + day + "日是当年的第" + sumDays + "天");
            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
                System.out.println(year + "年是闰年");
            }
    
    }
}
************************************************************************************************************************************************************************************
4、
package com.oupeng.exer;
/*
 * 计算矩形的周长和面积
 */
import java.util.Scanner;
public class four {
    public static void main(String[] arg){
        Scanner scan = new Scanner(System.in);
        
        System.out.println("请输入矩形的长:");
        double length = scan.nextDouble();
        
        System.out.println("请输入矩形的宽:");
        double width = scan.nextDouble();
        
        double perimeter = (length + width ) * 2;
        double area = length * width;
        
        
        System.out.println("矩形的周长为:" + perimeter);
        System.out.println("矩形的面积为:" + area);
    }

}
************************************************************************************************************************************************************************************
5、
******************************************************************************************************************************************************​​​​​​​******************************
6、选择结构练习1
package com.oupeng.exer;
/*
 * 从键盘输入3个数,求最大值
 */
import java.util.Scanner;
public class practice6 {
    private static Scanner scan;
    public static void main(String[] arg){
        scan = new Scanner(System.in);  
        
        System.out.println("请输入第一个数:");
        int n1 = scan.nextInt();
        System.out.println("请输入第二个数:");
        int n2 = scan.nextInt();
        System.out.println("请输入第三个数:");
        int n3 = scan.nextInt();
        
        int max1 = (n1 > n2)? n1 : n2;
        int max2 = (max1 > n3)? max1 : n3;
        System.out.println("最大值为:" + max2);    
    }
}
******************************​​​​​​​******************************​​​​​​​******************************************************************************************​​​​​​​******************************
7、选择结构练习2

package com.oupeng.exer;
/*我想买车,买什么车决定于我在银行有多少存款:
(1)如果我的存款超过500万,我就买卡迪拉克
(2)否则,如果我的存款超过100万,我就买帕萨特
(3)否则, 如果我的存款超过50万,我就买依兰特
(4)否则, 如果我的存款超过10万,我就买奥托
(5)否则, 如果我的存款10万以下 ,我买捷安特
 */
import java.util.Scanner;

public class practice7 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        
        System.out.println("请输入您的存款:(单位:万)");
        int money = scan.nextInt();
        
        if(money > 500){
            System.out.println("去整个卡迪拉克吧");
        }else if(money > 100){
            System.out.println("去买个帕萨特吧");
        }else if(money > 50){
            System.out.println("去买个依兰特吧");
        }else if(money > 10){
            System.out.println("去买个奥托吧");
        }else if(money > 10){
            System.out.println("去买个捷安特吧");
        }    
    }

}


******************************​​​​​​​******************************​​​​​​​******************************************************************************************​​​​​​​******************************
8、选择结构练习4

package com.oupeng.exer;
/* 机票的价格受季节旺季、淡季的影响,头等舱和经济舱价格也不同。
 * 假设机票原价5000元,请根据出行的月份和选择的仓位输出实际的机票价格。
旺季(4-10月):     头等舱 九折
                经济舱 八折
淡季 (10-3月):    头等舱 五折
                经济舱 四折
控制台输出如下:
请输入您出行的月份:1-12
请选择头等舱(1)还是经济舱(2)?
您的机票价格为:3000.0
 */
import java.util.Scanner;

public class practice8 {
    private static Scanner scan;
    public static void main(String[] args){

        scan = new Scanner(System.in);
        System.out.println("请输入您出行的月份:");
        int month = scan.nextInt();
        System.out.println("请选择头等舱(1)还是经济舱(2):");
        int n = scan.nextInt();
        
        int s = 5000 * 4 / 10; 
        int w = 5000 * 5 / 10;
        int b = 5000 * 8 / 10;
        int j = 5000 * 9 / 10;
            
        switch(month){
        case 4:
        case 5:
        case 6:
        case 7:
        case 8:
        case 9:
        case 10:
            if(n == 1){
                System.out.println("您的机票价格为:" + j + "元");
            }else if(n == 2){
                System.out.println("您的机票价格为:" + b + "元");
            }else{
                System.out.println("输入错误!");
            }
            break;
        case 11:
        case 12:
        case 1:
        case 2:
        case 3:
            if(n == 1){
                System.out.println("您的机票价格为:" + w + "元");
            }else if(n == 2){
                System.out.println("您的机票价格为:" + s + "元");
            }else{
                System.out.println("输入错误!");
            }
            break;        
        }        
    }

}


******************************​​​​​​​******************************​​​​​​​******************************************************************************************​​​​​​​******************************
9、while循环练习1

package com.oupeng.exer;
/*
 * 计算100以内的偶数之和
 */
public class practice9 {
    public static void main(String[] args) {
        int num = 0;
        int sum = 0;
        while(num <= 100){
            sum = sum + num;
            num = num + 2;
            
        }
        System.out.println(sum);    
    }

}
******************************​​​​​​​******************************​​​​​​​******************************************************************************************​​​​​​​******************************
10、while循环练习2
package com.oupeng.exer;
/*
 * 整数反转(三位数):如123,输出321
 */
import java.util.Scanner;
public class practice10 {
    private static Scanner scan;
    public static void main(String[] args) {
        scan = new Scanner(System.in);
        System.out.println("请输入您要反转的整数(三位数):");
        int num = scan.nextInt();
        
        int b = num / 100; 
        int s = num / 10 % 10;
        int g = num % 10;
        
        System.out.println("反转后为:" + g + s + b);    
    }
}
******************************​​​​​​​******************************​​​​​​​******************************************************************************************​​​​​​​******************************
11、循环练习1


package com.oupeng.exer;
import java.util.Scanner;
//后面将String的时候会讲:字符串之间值的比较要用equals
/*    用户登录验证,验证次数最多3次:
 *     请输入用户名:Lily
    请输入密码:111111
    输入错误!您还有2次机会!
    请输入用户名:Mike
    请输入密码:123456
    输入错误!您还有1次机会!
    请输入用户名:jim
    请输入密码:000000
    输入错误!您还有0次机会!
    对不起,您3次均输入错误!
 */
public class practice11t {
    private static Scanner scan;
    public static void main(String[] args) {
        scan = new Scanner(System.in);
        
        for(int i = 1;i <= 3;i++){
            int j = 3 - i;
            System.out.print("请输入用户名:");
            String username = scan.next();
            System.out.print("请输入密码:");
            String code = scan.next();
            
            if(username.equals("a1") && code.equals("b2")){
                System.out.print("登录成功");
                break;
            }else{
                System.out.println("输入错误!您还有" + j + "次机会!");
            }
            
            if(i == 3){
                System.out.println("对不起,您3次均输入错误!");
            }
        }
    }
}
​​​​​​​
******************************​​​​​​​******************************​​​​​​​******************************************************************************************​​​​​​​******************************
12、循环练习2
package com.oupeng.exer;
/*
 *         输出摄氏温度与华氏温度的对照表,
 *         要求它从摄氏温度0度到250度,每隔20度为一项,
 *         对照表中的条目不超过10条。
        转换关系:华氏温度 = 摄氏温度 * 9 / 5.0 + 32
 */
public class practice12 {
    public static void main(String[] args) {
        int s = 0;
        
        System.out.println("摄氏温度(℃)" + "\t\t" + "华氏温度(℉)");    
        for(s = 0;s <= 250;s += 20){    
            double h = s * 9 / 5.0 + 32;
            System.out.println(s + "\t\t\t" + h);
        }    
    }
}
******************************​​​​​​​******************************​​​​​​​******************************************************************************************​​​​​​​******************************
13、循环练习3


******************************​​​​​​​******************************​​​​​​​******************************************************************************************​​​​​​​******************************
14、循环练习4
package com.oupeng.exer;
/*
 * 输出100以内的素数:
 * 质数是指在大于1的自然数中,
 * 除了1和它本身以外不再有其他因数的自然数。(2.3.5.7.11.13.17.19....)
 */
public class practive14 {
    public static void main(String[] args) {
        boolean isFlag = true;
        for(int i = 2;i <= 100;i++){
            for(int j = 2;j < i;j++){
                if(i % j == 0){
                    isFlag = false;
                }
            }
            if(isFlag == true){
                System.out.println(i);
            }
            isFlag =true;
        }
    }
}
************************************************************************************************************************************************************************************
15、数组练习1

package com.oupeng.exer;

import java.util.Scanner;
/*
 * 有一个数列:8,4,2,1,23,344,12
(1)循环输出数列的值
(2)逆序输出数列的值
(3)求数列中所有数值的和
(4)猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数
 */

public class practice01 {
    private static Scanner scan;

    public static void main(String[] args) {
        scan = new Scanner(System.in);
        
        int[]  num = new int[]{8,4,2,1,23,344,12};
        //循环输出数列的值(遍历)
        System.out.print("循环输出数列的值:");
        for(int i = 0; i < num.length;i++){
            System.out.print(num[i] + " ");
        }
        
        System.out.println();
        //逆序输出数列的值
        System.out.print("逆序输出数列的值:");
        for(int i = 0; i < num.length;i++){
            System.out.print(num[num.length - i - 1] + " ");
        }
        
        System.out.println();
        //求数列中所有数值的和
        int sum = 0;
        System.out.print("数列中所有数值的和为:");
        for(int i = 0;i < num.length;i++){
            sum += num[i];
        }
        System.out.print(sum + " ");
        
        System.out.println();
        //猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数
        System.out.println("请输入一个数据:");
        int date = scan.nextInt();
        boolean isFlag = true;
        for(int i = 0;i < num.length;i++){
            if(date == num[i]){
                int i2 = i + 1;
                System.out.println("找到了!位置在第" + i2 + "个");
                isFlag = false;
                break;
            }
        }
        if(isFlag){
            System.out.println("未找到!");
        }
    }
}
************************************************************************************************************************************************************************************
16、数组练习2

package com.oupeng.exer;
/*
 * 数组的冒泡排序的实现
 */
public class practice02 {
    public static void main(String[] args){
        char[] arr = new char[]{'m','b','p','f','a','u','z'};
        //冒泡排序
        for(int i = 0;i < arr.length - 1;i++){
                for(int j = 0;j < arr.length - 1 - i;j++){
                    if(arr[j] > arr[j + 1]){
                        int temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = (char) temp;
                    }
                }
        }
        System.out.println(arr);     
    }

}

**************************************************************************************************************************************************************************

17、数组练习3

package com.oupeng.exer;
/*
 * 读取1到100之间的整数,然后计算每个数出现的次数。
 * 假定输入0表示结束。
 */
import java.util.Scanner;
public class practice03 {
    
    private static Scanner scan;

    public static void main(String[] args) {
        scan = new Scanner(System.in);
        int[] numbers = new int[101];
        int n ;
        System.out.println("请从1-100输入一个数: ");
        do{
            n = scan.nextInt();
            numbers[n]++;
        }while(n>0);
        for(int i = 1;i < numbers.length;i++){
            if(numbers[i]==1) {
                System.out.println(i + " occurs " + numbers[i] + " time");
            }else if(numbers[i]>1){
                System.out.println(i + " occurs " + numbers[i] + " times");
            }
        }
    }
}

**************************************************************************************************************************************************************************

18、数组练习4

package com.oupeng.exer;
/*
 * 判断一个数组是否已有序(升序)
 */
public class practice04 {
    public static void main(String[] args) {
        int[] array = new int[] {3,5,2,4};
        System.out.println(sor.isSort(array));
    }  
}
class sor{
    public static boolean isSort(int[] array) {
        for (int i = 0; i < array.length - 1; i++) {
            if (array[i] > array[i + 1]) {
                return false;
            }
        }
        return true;
    }
}

**************************************************************************************************************************************************************************

19、带参练习1

package com.oupeng.practice;
/*
 * 近似求Π
 *     方法:Π = 4 * (1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ...)
 *     程序中1.0代替1
 */
public class Daican1 {
    public static void main(String[] args) {
        Qiupai q = new Qiupai();
        q.PI();
    }
}
class Qiupai{     
         int i=0;
         private double a=1.0;
         private double b=0.0;
         private double j=1.0;
         private double k=1.0;
         
         public void PI(){
             for(i=0;i<10000000;i++){
                 j=1/(2*i*1.0+1);
                 k=(double)Math.pow(-1,i);
                 a=j*k;
                 b+=4*a;
             }
             System.out.println("PI ="+b);
         }
}

**************************************************************************************************************************************************************************

20、带参练习2

package com.oupeng.practice;
/*
 * 合并两个升序数组
 */
public class DaiCan2 {
    public static void main(String[] args) {
        int[] arr = {5,23,35,17,78,36,7,45,12};
        int[] arr1 = {6,24,38,74,47,10};
        int [] arr2 = Merge.MergeNewArr(arr,arr1);
        
        Merge.printArr(arr2);
        Merge.SortArr(arr2);
        //换行        
        System.out.println();
        //重新打印
        Merge.printArr(arr2);
    }
}
class Merge{
    //合并两个数组
    public static int[] MergeNewArr(int[] arr,int[] arr1){
    
        int[] arr2 = new int[arr.length + arr1.length];
        for(int i=0;i<arr.length;i++){
            arr2[i] = arr[i];
        }
        for(int i=0;i<arr1.length;i++){
            arr2[arr.length+i] = arr1[i];
        }
        return arr2;
    }
    //遍历数组    
    public static void printArr(int[] arr){
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+"  ");
            }
        }
        
    //给新数组排序;
    public static void SortArr(int[] arr){
        for(int i=0;i<arr.length-1;i++){
            for(int j=0;j<arr.length-1-i;j++){
                
                if(arr[j+1]<arr[j]){
                    int tem = arr[j+1];
                    arr[j+1] = arr[j];
                    arr[j] = tem;
                }
            }
        }
    }    
}

**************************************************************************************************************************************************************************

21、带参练习3

**************************************************************************************************************************************************************************

22、无参练习1

package com.oupeng.practice;
/*
 * 游客:
 * 属性:姓名 年龄
 * 方法:买票 返回票价(6岁以前,60岁以后免费,其他20元)
 * 输出:xxx,票价:xx元
 */
public class WuCan1 {
    public static void main(String[] args) {
        Custom c = new Custom();
        c.setName("张三");
        c.fare(22);    
    }
}
class Custom{
    private String name;
    private int age;
    
    //设置游客姓名
        public void setName(String name){
            this.name = name;
        }
        
    //获取游客姓名
    public String getName(){
        return name;
    }
    
    //获取年龄
    public int getAge() {
        return age;
    }
    //根据年龄决定票价
    public void fare(int age){
        this.age = age;
        int f;
        if(age < 6 || age > 60){
            f = 0;
            System.out.println(this.name + ",票价为: " + f + "元");
        }else if(age < 0){
            System.out.println("输入有误");
        }else{
            f = 20;
            System.out.println(this.name + ",票价为: " + f + "元");
        }
    }
}

**************************************************************************************************************************************************************************

22、无参练习2

**************************************************************************************************************************************************************************

23、构造方法练习

package com.oupeng.exer;

public class Fan {
    public static void main(String[] args) {
        
    }
}
class FanFan{
    int SLOW = 1;
    int MEDIUM = 2;
    int FAST = 3;
    private int speed = SLOW;//速度
    private boolean on = false;//开关
    private double radius = 5;//半径
    private String color = "blue";//颜色
    
    //构造方法
    public FanFan(){
    
    }
    //普通方法
    public String toString(){
        if(on){
            return speed + color + radius;
        }else{
            return "fan is off" + color + radius;
        }
    }
    
    //四个访问器和修改器
    public int getSpeed() {
        return speed;
    }
    public void setSpeed(int speed) {
        this.speed = speed;
    }
    public boolean isOn() {
        return on;
    }
    public void setOn(boolean on) {
        this.on = on;
    }
    public double getRadius() {
        return radius;
    }
    public void setRadius(double radius) {
        this.radius = radius;
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
}

*****************************************************************************************************************************************************************

24、字符串练习1

package com.oupeng.pracitice;

public class MyString1 {
    private final char[] chars;
    public char[] show(){
        return chars;
    }
    public MyString1(char[] chars){
        this.chars=chars;
    }
    public char charAt(int index){
        return this.chars[index-1];
    }
    public int length(){
        return chars.length;
    }
    public MyString1 substring(int begin, int end){
        char[] string=new char[end-begin+1];
        int i=0;
        int n=0; 
        for(i=begin;i<end;i++){
            string[n]=chars[i];
            n++;
        }
        MyString1 newString=new MyString1(string);
        return newString;
    }
    public MyString1 toLowerCase() {
        char[] string = new char[chars.length];
        for(int i=0; i<chars.length; i++) {
            string[i]=chars[i];
        }
        for(int i=0; i<chars.length; i++) {
            if(string[i]>='A'&&string[i]<='Z') {
                string[i]=(char) (string[i]+32);
            }
        }
        MyString1 newString=new MyString1(string);
        return newString;
    }
    public boolean equals(MyString1 s) {
        int flag=0;
        if(this.chars.length==s.chars.length) {
            for(int i=0; i<=chars.length-1; i++) {
                if(s.chars[i]!=this.chars[i]) {
                    flag=1;
                    break;
                }
            }
            if(flag==0)
                return true;
            else
                return false;
        }
        return false;
    }
    public static MyString1 valueOf(int i) {
        char[] string=new char[10];
        int flag=0;
        for(int n=0; i*10/10!=0; n++) {
            string[n]=(char)(i%10+(int)'0');
            i=i/10;
            flag++;
        }
        int top=0,end=flag-1;    
        while(top<end){
            char temp=string[top];
            string[top]=string[end];
            string[end]=temp;
            top++;
            end--;
        }
        MyString1 newString=new MyString1(string);
        return newString;
    }    
}

*****************************************************************************************************************************************************************
25、字符串练习2
package com.oupeng.pracitice;
//统计一个字符串中出现一个指定字符串的个数
public class zifuchuan {
    public static void main(String[] args) {
        System.out.println(show("1354965590","5"));
    }
    public static int show(String str,String str1){
        int i = 0;
        while(str.indexOf(str1) != -1){
            i++;
            str = str.substring(str.indexOf(str1) + str1.length());
        }
        return i;
    }
}
*****************************************************************************************************************************************************************
26、字符串练习3

package com.oupeng.pracitice;
//校验用户名是否合法(只能是数字和字母/必须有一个大写字母
public class XiaoYan {
    public static void main(String[] args) {
        String u = "123bcd";
        XiaoYan x = new XiaoYan();
        x.xiaoyan(u);
    }
    
    public void xiaoyan(String username){
        boolean b = false;//判断是否含有一个大写字母
        boolean b1 = false;//判断是否含有一个数字或字母
        for(int i = 0; i < username.length(); i++) {
            if(Character.isUpperCase(username.charAt(i))){
                b = true;
                break;
            }
        }
        for(int i = 0; i < username.length(); i++) {
            if(Character.isLetterOrDigit(username.charAt(i))){
                b1 = true;
                break;
            }
        }
        if(b && b1){
            System.out.println("用户名合法!");
        }else{
            System.out.println("非法用户名!");
        }
    }
}
*****************************************************************************************************************************************************************
27、随机数练习1

package com.oupeng.practice;
//产生6个手机号,均以139开头,之后8位随机生成,保证不重复
public class Pra1 {
    public static void main(String[] args) {
        Pra1 p = new Pra1();
        p.suiji();
    }
    
    public void suiji(){
        for (int i = 0; i < 100; i++){
            int intFlag = (int)(Math.random() * 100000000);
            String flag = String.valueOf(intFlag);
            
            if (flag.length() == 6 && flag.substring(0, 1).equals("9")){
            System.out.println(intFlag);
            }else{
            intFlag = intFlag + 900000000;
            System.out.println("13" + intFlag);
            }        
        }
    }
}
*****************************************************************************************************************************************************************
28、随机数练习2

*****************************************************************************************************************************************************************

29、继承练习1

/*宠物:
属性:昵称,健康值(int)
方法:显示信息,输出各属性值

狗:继承宠物
增加属性:品种strain
重写方法:吃
增加方法:玩飞盘,健康值增加
生病,健康值减少
猫:继承宠物
重写方法:吃
实例化对象进行测试
*/

Pet.java

package com.oupeng.jcpra;

public class Pet {
    protected String name;//宠物昵称
    protected int health = 80;//健康值
    
    protected void eat(){
        System.out.println("正在进食");
    }
    

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getHealth() {
        return health;
    }

    public void setHealth(int health) {
        this.health = health;
    }
}

Dog.java

package com.oupeng.jcpra;

public class Dog extends Pet{
    protected String strain = "金毛";//品种
    
    //重写
    public void eat(){
        System.out.println("狗正在进食");
    }
    
    public void play(){
        health += 5;
    }
    
    public void ill(){
        health -= 10;
    }
    
    public String getStrain() {
        return strain;
    }

    public void setStrain(String strain) {
        this.strain = strain;
    }
}

Cat.java

package com.oupeng.jcpra;

public class Cat extends Pet {
    public void eat(){
        System.out.println("猫正在进食");
    }
}

TestPet.java

package com.oupeng.jcpra;

public class Test {
    public static void main(String[] args) {
        Cat c = new Cat();
        c.eat();
        System.out.println(c.getHealth());
        
        Dog d = new Dog();
        d.eat();
        d.play();//85
        d.ill();//75
        System.out.println(d.getHealth());//75
        d.setName("旺财");
        System.out.println(d.getName());
        System.out.println(d.getStrain());
    }
}

**************************************************************************************************************************************************************

30、继承练习2

/*银行卡: 卡号、密码、姓名、余额
方法:取款
本行卡:
方法:取款、转账
其它行卡:
方法:取款(加收2元手续费)

实例化对象进行测试

*/

BankCard.java

package com.oupeng.jcpra2;

public class BankCard {
    protected int num;//卡号
    protected String password;//密码
    protected String name;//姓名
    protected double balance = 100.00;//余额
    
    //取款
    public void drawal(double d){
        balance = this.balance - d;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getBalance() {
        return balance;
    }    
}

AllCard.java

package com.oupeng.jcpra2;

public class AllCard extends BankCard {

    //取款
    public void drawal(double d){
        balance = this.balance - d;
    }
    
    //转账
    public void transfer(double d2){
        balance = this.balance - d2;
    }
}

OtherCard.java

package com.oupeng.jcpra2;

public class OtherCard extends BankCard{
    //取款(加收)
    public void drawal(double d){
        balance = this.balance - d - 2;
    }
}

TestBankCard.java

package com.oupeng.jcpra2;

public class Test {
    public static void main(String[] args) {
        OtherCard c = new OtherCard();
        c.drawal(10.00);//90-2
        System.out.println(c.getBalance());
        AllCard a = new AllCard();
        a.transfer(20.00);//80
        System.out.println(a.getBalance());
    }
}

31、多态练习

/*    笔记本支持用户使用电池 (Battery) 和交流电(AcPower)两种方式进行供电。
使用多态性输出目前笔记本的电源供电情况“XX供电中…”
*/

Power

package com.oupeng.practice;

public abstract class Power {
    public abstract void charge(); 

}

Battery

package com.oupeng.practice;

public class Battery extends Power{
    @Override
    public void charge(){
        System.out.println("电池供电中");
    }
    
    public void speed(){
        System.out.println("电池速度");
    }

}

ActPower

package com.oupeng.practice;

public class ActPower extends Power{
    @Override
    public void charge(){
        System.out.println("交流电供电中");
    }
    
    public void speed(){
        System.out.println("交流电速度");
    }
}

Laptop

package com.oupeng.practice;

public class Laptop {
    public void laptop(Power w){
        w.charge();
    }
    
    public void speed(Power w){
        if(w instanceof Battery){
            Battery b = (Battery)w;
            b.speed();
        }else if(w instanceof ActPower){
            ActPower a = (ActPower)w;
            a.speed();
        }
    }
}

Test

package com.oupeng.practice;

public class Test {
    public static void main(String[] args) {
        Laptop l = new Laptop();
        l.laptop(new Battery());
        l.laptop(new ActPower());
        
        l.speed(new Battery());
        l.speed(new ActPower());
    }
}

**************************************************************************************************************************************************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ter.1011

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值