正是在下的错题本

it2023-02-08  46

知错能改善莫大焉

6.给客户创建账号,并给余额赋值5.类作为数据类型声明变量4.值传递内存解析3.空指针2.局部变量必须初始化1.定义变量语句 数据类型 变量名 = 变量值;

6.给客户创建账号,并给余额赋值

package com.atguigu.exer; public class CustomerTest1 { public static void main(String[] args) { Bank1 bank1 = new Bank1(); bank1.addCustomer("Jane", "Smith"); bank1.getCustomers(0).setAccount(new Account1(2000)); bank1.getCustomers(0).getAccount().withraw(500); double balance = bank1.getCustomers(0).getAccount().getBalance(); System.out.println("客户: " + bank1.getCustomers(0).getFirstName()+ " 的账户余额为: " + balance); } } package com.atguigu.exer; /* * 在提款方法 withdraw()中,需要判断用户余额是否能够满足 * 提款数额的要求,如果不能, 应给出提示。deposit()方法表 * 示存款。在提款方法 withdraw()中,需要判断用户余额是否 * 能够满足提款数额的要求,如果不能, 应给出提示。deposit() * 方法表示存款。 */ public class Account1 { private double balance; public Account1(double int_balance) { balance = int_balance; } public double getBalance() { return balance; } //存钱操作 public void deposit(double amt) { if (amt > 0) { balance += amt; System.out.println("存款成功,余额为:" + balance); } } //取钱操作 public void withraw(double amt) { if (balance < amt) { System.out.println("余额不足,请确认后重新输入"); return; } balance -= amt; System.out.println("取款成功,余额为:" + balance); } } package com.atguigu.exer; public class Customer1 { private String firstName; private String lastName; private Account1 account; public Customer1(String f,String l){ firstName = f; lastName = l; } public Account1 getAccount() { return account; } public void setAccount(Account1 account) { this.account = account; } public String getFirstName() { return firstName; } public String getLastName() { return lastName; } } package com.atguigu.exer; public class Bank1 { private Customer1[] customers ;// 存放多个客户的数组 private int numberOfCustomers; // 记录客户的个数 public Bank1() { customers = new Customer1[10]; } // 添加客户 public void addCustomer(String f, String l) { Customer1 cust = new Customer1(f, l);// ? // customer[i] = customer1;//? customers[numberOfCustomers++] = cust;// 难点.先赋值,后+1 } // 获取客户个数 public int getNumOfCustomers() { return numberOfCustomers; } // 获取指定位置上的客户 public Customer1 getCustomers(int index) { // return customers[index];异常 if (index >= 0 && index < numberOfCustomers) { return customers[index]; } return null; } }

5.类作为数据类型声明变量

package com.atgugui.exer; /* * (1)定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个 findArea()方法返回圆的面积。 * (2)定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义 如下:public void printAreas(Circle c, int time) * 在printAreas方法中打印输出1到time之间的每个整数半径值,以及对应的面积。 例如,times为5,则输出半径1,2,3,4,5,以及对应的圆面积。 * (3)在main方法中调用printAreas()方法,调用完毕后输出当前半径值。程序运行结果如图 所示. */ public class PassObject { public static void main(String[] args) { PassObject test = new PassObject(); Circle c = new Circle();// 需要先造对象,然后在使用. test.printAreas(c, 5);//调用方法时对c束手无策. System.out.println("now radius is " + c.radius);// 值传递问题. } public void printAreas(Circle c, int time) { // Circle c 作为形参意义在于调用Circle中的属性和方法. System.out.println("Radius\t\tArea"); for (int i = 1; i <= time; i++) { // 设置圆的半径 c.radius = i; System.out.println(c.radius + "\t\t" + c.findArea()); } c.radius = time + 1; } }

4.值传递内存解析

package com.atguigu.java1; public class TransferTest3 { public static void main(String[] args) { TransferTest3 test = new TransferTest3(); test.first(); } public void first(){ int i = 5; Value v = new Value(); v.i = 25; second(v,i); System.out.println(v.i); } public void second(Value v,int i){ i = 0; v.i =20; Value val = new Value(); v = val; System.out.println(v.i + " " + i); } } class Value { int i = 15; }

//错因:调用second方法时,Value val = new Value(); //未意识到新造对象会在堆中开辟新的空间,以及v = val; //这一行赋值错误.

3.空指针

int[][] arr2 = new int[4][]; System.out.println(arr[0]);//null System.out.println(arr2[0][0]);//空指针,运用内存知识进行理解.

2.局部变量必须初始化

if(num1 > num2){ max3 = num1; }else{ int max3 = num2; }

if(max3 > num3){ int max4 = max1; }else{ max4 = num3; } System.out.println("num2 = " + max4);//会报错,必须单独定义新变量才能执行语句.

正确做法:

int max3; int max4; if(num1 > num2){ max3 = num1; }else{ max3 = num2; }

if(max3 > num3){ max4 = max1; }else{ max4 = num3; } System.out.println("num2 = " + max4);

1.定义变量语句 数据类型 变量名 = 变量值;

使用变量语句 变量名 (=) (变量值);不再加数据类型.

class BitTest{ public static void main(String[] args){ //练习 int num1 = 10; int num2 = 20;//目的:变量的值交换 //方式一:空杯子法.定义临时变量. //推荐的方式 int temp = num1; num1 = num2; num2 = temp; System.out.println(num1); System.out.println(num2); /*方式二: 好处: 不用定义临时变量. 弊端:①相加操作可能超出存储范围 ②有局限性 : 只能适用于数值类型 */ //方式三: int num3 = 10; int num4 = 20; int temp1 = num3 & num4; num3 = temp1 | num4; System.out.println(num3); } }
最新回复(0)