Java第一次作业答案与解析

第一题:构造一个银行账户类,类的构成包括如下内容:

(1)数据成员用户的账户名称、用户的账户余额(private数据类型)

(2)方法包括开户(设置账户名称及余额),利用构造方法完成。

(3)查询余额

(4)编写测试类 测试各功能

答案:

/*
 * 
 	Written by Chunhui
 	Time 2023.9.13
 	Function 模拟银行,实现开户和余额查询
 */
class Info{
	private String account_name;
	private double rest_money=0;
	
	//构造函数进行开户
	String create(String name,int money) {
		this.account_name=name;
		this.rest_money=money;
		String data="name:"+this.account_name+"	"+"rest:"+this.rest_money;
		return data;
	}

    //默认构造方法,保险一点
    Info(){}

	//余额查询
	double ask_rest() {
		return this.rest_money;
	}

	//返回private的余额值
	double getRest_money() {
		return rest_money;
	}
    
    //修改private的值
	void setRest_money(double rest_money) {
		this.rest_money = rest_money;
	}
}

public class Account{
	public static void main(String[] args) {
		Info data_first = new Info();
		System.out.println("进行开户操作:");
		String data_first_answer=data_first.create("Wang", 0);
		System.out.println("开户完成\n信息为"+data_first_answer);
		System.out.println("余额为:"+data_first.ask_rest());
        
        //进阶版plus
        //利用getter方法输出值    
		System.out.println("余额为:"+data_first.getRest_money());
        //利用setter方法修改值
		System.out.println("修改余额为:50");
		data_first.setRest_money(50);
		System.out.println("现在余额为:"+data_first.ask_rest());
	}
}

反思总结:

(1)用getter和setter修改private类型的值

(2)构造方法使用this

第二题:编写一个整数数组(长度为5),从键盘上依次输入所有的元素,然后对数组进行排序,最后使用foreach输出所有的元素。

答案:

/*
 * 
	Written by Chunhui
 	Time 2023.9.13
 	Function 数组进行输入+排序(用foreach进行排序)
 */
import java.util.*;

class steps{
	int number[]=new int[5];
	int i;

	//创建数组
	void create(int number[]) {
		for(i=0;i<5;i++)
		{
			Scanner nums = new Scanner(System.in);
			number[i]=nums.nextInt();
		}
	}
	
    //进行排序(此处简略版排序)
	void sort(int number[]) {
		Arrays.sort(number);
	}
	
    //foreach进行输出
	void show(int number[]) {
		for(int i:number)
		{
			System.out.println(i);
		}
	}
}
public class Array {
	public static void main(String[] args) {
        //创建array1对象
		steps array1=new steps();
		int number[]=new int[5];
		array1.create(number);
		array1.sort(number);
		array1.show(number);
	}
}

反思总结:

(1)排序可以直接用函数.sort()函数

(2)foreach方法进行输出时,for(int i:number),number是数组变量名,i是number里面的成员

第三题:定义一个类,然后定义一个对象数组,并进行初始化(长度为3-5之间),编写代码实现数组的克隆,克隆后的数组具有自己的内存空间。

答案:

/*
 * 
 	Written by Chunhui
 	Time 2023.9.13
 	Function 1.构建对象数组;2.拷贝数组
 */
class music {
	String name;	//名字
	double price;	//价格
	int volume;		//播放量
	String author;	//作者
	
	//构造函数
	public music(String name,double price,int volume,String author){
		this.name=name;
		this.price=price;
		this.volume=volume;
		this.author=author;
	}
	
	//默认构造函数方法
	public music() {}
	
	//获取每一个值
	String inform() {
		return name+"  "+price+"  "+volume+"  "+author;
	}
	
	//输出
	void show(music a[]) {
		for(music i:a){
			String answer=i.inform();
			System.out.println(answer);
		}
	}
}
public class Object{
	public static void main(String[] args){
        //创建对象数组以及初始化
		music[] data=new music[5];
		data[0]=new music("a",2.1,5,"A");
		data[1]=new music("b",2.1,5,"B");
		data[2]=new music("c",2.1,5,"C");
		data[3]=new music("d",2.1,5,"D");
		data[4]=new music("e",2.1,5,"E");
		System.out.print("data:");
		data[1].show(data);//是不是任意一个都可以?只要是data[i]

        //克隆数组,用clone函数
		music[] datanew = data.clone();
		System.out.print("datanew:");
		datanew[1].show(datanew);

        //进行检验,datanew有一个新的地址,不是引用的顶替
		if(datanew!=data)
		{
			System.out.print("OK");
		}
	}
}

反思总结:

(1)music[] data=new music[5];这是进行对象数组的初始化,以后对每一个成员都要用new方法创建对象

(2)克隆函数用.clone()函数

(3)最后可以datanew==data进行检验

第四题:编程比较两个String对象的大小,若字符串1和字符串2相等,显示相同;若字符串1和字符串2不相等,则显示第一个不同字符的差值;若字符串1和字符串2仅长度不同,则显示两者长度的差值(可在main方法中之前对两个String对象赋值,通过赋不同的值来测试不同的情况)。

答案:

/*
 * 
 	Written by Chunhui
 	Time 2023.9.13
 	Function 数组判断是否相同
 */
import java.util.*;
class array{
	String data;
	
	//构造方法
	public array(String a) {
		this.data=a;
	}
	public array() {}
	
	//返回首字母的差
	int diff_init(String a,String b) {
		return a.compareTo(b);
	}
}
public class ArrayJudgeSame {
	public static void main(String[] args) {
		//进阶版plus(如果从键盘读入字符串可以这样)
        //Scanner sc = new Scanner(System.in);
		//array a=new array(sc.nextLine());
		

        array a=new array("abc");
		array b=new array("abc");
		array c=new array("bcd");
		array d=new array("bc");
		array e=new array("abz");
		System.out.println(a.data+"和"+b.data+"的结果是:"+a.diff_init(a.data,b.data));
		System.out.println(a.data+"和"+c.data+"的结果是:"+a.diff_init(a.data,c.data));
		System.out.println(a.data+"和"+d.data+"的结果是:"+a.diff_init(a.data,d.data));
		System.out.println(a.data+"和"+e.data+"的结果是:"+a.diff_init(a.data,e.data));
	}
}

反思总结:

(1)用compareTo()函数返回字符串类型的差值。

        如果第一个字符和参数的第一个字符不等,结束比较,返回第一个字符的ASCII码差值。        

        如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至不等为止,返回该字符的ASCII码差值。

         如果两个字符串不一样长,可对应字符又完全一样,则返回两个字符串的长度差值。

第五题:声明一个图书类,其数据成员为书名、编号(利用静态变量实现自动编号)、书价,并拥有静态数据成员册数、记录图书的总册数,在构造方法中利用此静态变量为对象的编号赋值,在主方法中定义对象数组,并求出总册数,编写测试类测试各功能。

答案:

/*
 * 
 	Written by Chunhui
 	Time 2023.9.13
 	Function:1.声明一个图书类,其数据成员为书名、编号(静态变量+自动编号),书价,静态数据成员册数、图书的总册数,
 			 2.在构造方法中利用此静态变量为对象的编号赋值,在主方法中定义对象数组,并求出总册数,
 			 3.编写测试类测试各功能
 */

class text{
	String name;
	double price;
	int id=1;
	int book_number=0;
	static int count=1;
	static int book_all=0;
	
    //构造方法
	public text(String name,double price,int book_number)
	{
		this.name=name;
		this.id++;
		this.price=price;
		this.book_number=this.book_number+book_number;
		this.book_all=this.book_all+book_number;
	}

    //输出
	String search(){
		String result="书名:"+this.name+"  "+"编号:"+this.id+"  "+"价格:"+this.price+"  "+"本数"+this.book_number;
		return result; 
	}

    //静态变量输出全部本数
	static int search_all(){
		return book_all;
	}
}

public class Book {
	public static void main(String[] args) {
		text[] data = {new text("Java",20,3),
                		new text("python",30,4),
                		new text("C",35,3)};
		System.out.println("图书总数为:"+ text.search_all()); 
		for(text i:data)
		{
			String answer=i.search();
			System.out.println(answer);
		}
	}
}

反思总结:

(1)利用静态变量进行自动编号的时候,可以static int count,然后每次count++,赋值给每一个对应的id

(2)static int book_all静态变量统计每一次的书本数目

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值