第一题:构造一个银行账户类,类的构成包括如下内容:
(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静态变量统计每一次的书本数目