第四周课程总结&试验报告(二)

第四周课程总结&试验报告(二)

(一)学习总结:

这一周学习的知识点一、有String类中常用的方法还有实例化String类对象还有String对象的内容比较还有String类两种对象实例化方式的区别。
知识点二、就是数组的定义及使用。
实例化String类对象(就是直接调用String类中的构造方法):

Public class Stringstr1{
Public static void main(String[] args){
String name=”Liyinglan”;
System.out.println(“姓名”+name);
}
}

1.String对象的内容比较:

对于基本数据类型可以通过“===”进行内容的比较,比较的是内容;不能用于比较地址的内容,比如说字符串;

2.String类的两种对象实例化的区别:

其一种是通过直接赋值的方式;另一种是使用;标准的new调用构造方法完成实例化;
(一)字符串就是一个String类的匿名对象,(匿名对象就是已经开辟了堆内存空间并可以直接使用的对象)如果使用new关键字的话,不管如何都会开辟一个新的内存空间,
但此时,此空间的内容还是原来的内容,所以上面的代码实际上是开辟了两个内存空间,但真正使用的只是一个使用关键词new开辟的空间,另一个是垃圾空间。

(二)String使用直接赋值的方式之后,只要是以后声明的字符内容相同,则不会再开辟新的内存空间;

3.字符串的内容一旦声明就不可以改变;(如果想改变就要将改变的赋值给原来的)

一个String对象内容的改变实际上是通过内存地址的“断开”变化完成的,而本身字符串中的内容并没有改变;

 Public class Stringnom{
         Public static void main(String[] args){
            String str=”hello”;
            str=str+”world”;
            System.out.println(“str=”+str);
    }
}

其输出的结果仍然是hello;

4.String类中常用方法:

(一)字符串和字符数组的转换;

(二)从字符串取出指定位置的字符;

    Public class Stringnom{
      Public static void main(String[] args){
          String str1=”hello”;
          System.out.println(str.charAt(3));
 }
}

输出结果为‘l’;

(三)字符串与byte数组的转换;

(四)取得一个字符串的长度;

Public class Stringnom2{
           Public static void main(String[] args){
                 String str1=”hello liuyinglan”;
                 Str1=str1+”world”;
                 System.out.println(“\”+str+”\”的长度为:”+str1.length());
       }
}

输出结果hello liuyinglan的长度为:16
(五)去掉左右空格;

(六)字符串截取;

Public class StringAPIDemo07{
            Public static void main(String[] args){
                 String str3=”hello word”;
                 System.out.println(str3.substring(6));
                 System.out.println(str3.substring(0,5));
     }
}

输出结果:

word
Hello

数组类型:

数据类型 数组名称[]=null; //声明数组为一维数组
数组名称=new 数据类型[长度]; //分配内存给数组

(二)实验总结:

1.写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width和height都是double型的,而color则是String类型的。要求该类具有:

(1) 使用构造函数完成各属性的初始赋值

(2) 使用get…()和set…()的形式完成属性的访问及修改

(3) 提供计算面积的getArea()方法和计算周长的getLength()方法

package javaxx;

class Demo1 {
	private double width;
	private double height;
	private String color;
	public Demo1(String color,double width,double height) {
		this.setWidth(width);
		this.setHeight(height);
		this.setColor(color);
	}
		public void tell() {
		System.out.print("面积:"+getArea()+"周长:"+getLength()+"颜色:"+this.getColor());
	}
	
	public double getWidth() {
		return width;
	}
	public void setWidth(double width) {
		this.width = width;
	}
	public double getHeight() {
		return height;
	}
	public void setHeight(double height) {
		this.height = height;
	}
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	public double getLength() {
		double length=getWidth()*2+getHeight()*2;
		return length;
		
	}
	public double getArea() {
		double area=getWidth()*getHeight();
		return area;
		
	}
}
	public class Gzao方法{
		public static void main(String[]args) {
			Demo1 a=new Demo1("红色",12,13);
			a.tell();
		}
	}

这个题不是很难,但是自己对构造方法不是很熟练,所以刚开始感觉很难,然后通过看书本知识,和通过看书本上的例题,

慢慢的就明白了,起初对赋值不明白,后来就明白,在后面调用的时候进行赋值,并且要一一对应,不能对应错public Demo1(String color,double width,double height) ,

Demo1 a=new Demo1("红色",12,13);,然后就是对public double getLength() 这个不清楚,在编写的时候吧()落掉了;结果出现了错误;

2.银行的账户记录Account有账户的唯一性标识(11个长度的字符和数字的组合),用户的姓名,开户日期,账户密码(六位的数字,可以用0开头),当前的余额。银行规定新开一个账户时,银行方面提供一个标识符、账户初始密码123456,客户提供姓名,开户时客户可以直接存入一笔初始账户金额,不提供时初始余额为0。定义该类,并要求该类提供如下方法:存款、取款、变更密码、可以分别查询账户的标识、姓名、开户日期、当前余额等信息。

package javaxx;

import java.util.Scanner; 

class Account{
	private int id;
	private String name;
	private String mima;
	private int time;
	private double remanent;
	public Account(String name,String mima,int time,double remanent,int id) {
		this.setId(id);
		this.setName(name);
		this.setMima(mima);
		this.setTime(time);
		this.setRemanent(remanent);
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getMima() {
		return mima;
	}
	public void setMima(String mima) {
		this.mima = mima;
	}
	public int getTime() {
		return time;
	}
	public void setTime(int time) {
		this.time = time;
	}
	public double getRemanent() {
		return remanent;
	}
	public void setRemanent(double remanent) {
		this.remanent = remanent;
	}
	public void Putout(){
		System.out.println("1.取款    2.存款");
		System.out.print("请选择您的交易类型:");
		Scanner input=new Scanner(System.in);
		int count=input.nextInt();
		if(count==1) {
			System.out.println("当前余额:"+getRemanent()+"元");
			System.out.print("请输入取款金额:");
			//scanner input=new Scanner(System.in);
			double money=input.nextInt();
			if(getRemanent()-money>=0) {
				setRemanent(getRemanent()-money);
				System.out.println("操作成功!");
				System.out.println("请取款");
			}
			else {
				System.out.println("余额不足,请充值");
			}
			
		}
		if(count==2) {
			System.out.println("当前余额:"+getRemanent()+"元");
			System.out.print("请输入存款金额:");
			double money1=input.nextInt();
			setRemanent(getRemanent()+money1);
			System.out.println("充值成功!");
			System.out.println("当前余额:"+getRemanent()+"元");
		}
	}
	public void Changmima() {
		System.out.print("输入密码:");
		Scanner input=new Scanner(System.in);
		String mima=input.nextLine();
		if(mima.equals(getMima())) {
			System.out.println("设置新密码:");
		    String mima1=input.nextLine();
		    System.out.println("请确认您的密码:");
		    String mima2=input.nextLine();
		  if(mima1.equals(mima2)) {
			  setMima(mima1);
			  System.out.println("密码设置成功为:"+getMima());
		}
		else {
			System.out.println("密码错误,请重新输入");
			System.out.println("请选择您的交易类型:");
		  }
		}
		else {
			System.out.println("密码错误,请重新输入");
			System.out.println("请选择您的交易类型:");
		}
		
	}
	public void Lookmessage() {
		System.out.print("输入密码:");
		Scanner input=new Scanner(System.in);
		String mima=input.nextLine();
		if(mima.equals(getMima()))
		{
			System.out.print("请输入卡号:");
			int khao=input.nextInt();
			if(khao==getId()) {
			System.out.println("标识:"+getId());
			System.out.println("姓名:"+getName());
			System.out.println("开户日期:"+getTime());
			System.out.println("余额:"+getRemanent());
		 }
		else {
			System.out.println("卡号错误,请重新输入");
		 }
		}
		else {
			System.out.println("密码错误,请重新输入");
		}
		
	}
	
}
public class Yhzhh {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Account str;
		str=new Account("刘颖岚","123456",20190919,2000000,12345678);
		int a=0;
		while(a!=5) {
			System.out.println("1.存取款");
			System.out.println("2.修改密码");
		    System.out.println("3.查询信息");
			System.out.println("4.退出程序");
			System.out.print("请选择您的交易类型:");
			Scanner input=new Scanner(System.in);
			int scanf=input.nextInt();
			if(scanf==1) {
				str.Putout();
			}
			if(scanf==2) {
				str.Changmima();
			}
			if(scanf==3) {
				str.Lookmessage();
			}
			if(scanf==4) {
				System.out.println("请取卡,谢谢您的使用");
				break;
			}
		}
	}

}

本题实验总结:这一个题看着比较长,题目也比较复杂,起初感觉这个题比较难,因为题目的意思看不明白,然后百度查看了别人的代码,经自己理解后才发现这相当于一个

银行ATM机的操作,虽然不知道题目要求到底是不是和我自己想的那样。知道了这个之后,我就理清了思路,首先构造出需要的属性,并且对其进行

封装,同时给出get方法和set方法,然后再构造三个不同属性的类,一个用来进行存储款操作,一个用来进行密码修改,还有一个用来查看信息;

最后给出一个每次都能弹出来的选择类型,通过给定数值让其选择相应的程序进行操作;

posted @ 2019-09-19 23:24  凉薄。。。  阅读(274)  评论(1编辑  收藏  举报