1.业务需求
2.代码
2.1实体类,用于对电影的信息进行存储
package com.itheima.Case;
//写一个实体类,用于对电影的信息进行存储
public class Movie {
//将private定义成员变量,进行合理隐藏,使用get 和set方法进行合理暴露(封装)
private int id;//通过id来查询更加详细的信息
private String name; //电影的名称
private double price;//电影票价格
private double score;//对电影的评分
private String director; //电影的导演
private String actor;//电影的演员
private String info ;//其他的相关信息
//提高开发效率,右键选择generate,进而选择getter和setter进行创建get和set方法
//同样的方法,新建有参(constructer全部勾选)和无参的构造器(勾选null)
public Movie() {
}
public Movie(int id, String name, double price, double score, String director, String actor, String info) {
this.id = id;
this.name = name;
this.price = price;
this.score = score;
this.director = director;
this.actor = actor;
this.info = info;
}
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 double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public String getDirector() {
return director;
}
public void setDirector(String director) {
this.director = director;
}
public String getActor() {
return actor;
}
public void setActor(String actor) {
this.actor = actor;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
}
2.2处理数据
package com.itheima.Case;
//现在开发的主流写法,保存数据和处理数据的进行分开
public class MovieOperator {
private Movie[] movies;
public MovieOperator(Movie[] movies){
this.movies = movies; //this关键词用于指向该对象
}
/**需求1:展示系统中全部电影信息 movies = [m1,m2,m3,m4];*/
//定义一个打印信息的方法,不需要返回值,void即可
public void printAllMovies(){
System.out.println("--------系统全部电影信息如下--------");
for (int i = 0; i < movies.length; i++) {
Movie m = movies[i];
//电影的信息
System.out.println("编号:" + m.getId());
System.out.println("名称:" + m.getName());
System.out.println("价格:" + m.getPrice());
System.out.println("--------------");
}
}
/**需求2:根据电影的编号查询出该电影的详细信息*/
public void searchMovieByID(int id){
for (int i = 0; i < movies.length; i++) {
Movie m = movies[i];
if(m.getId() == id){
System.out.println("该电影的详情如下:");
System.out.println("编号:" + m.getId());
System.out.println("名称:" + m.getName());
System.out.println("价格:" + m.getPrice());
System.out.println("评分:" + m.getScore());
System.out.println("导演:" + m.getDirector());
System.out.println("演员:" + m.getActor());
System.out.println("其他信息:" + m.getInfo());
return ;//表示已经找到了电影信息,没有必要再接着执行了
}
}
//需要全面考虑各种情况
System.out.println("没有该电影信息~");
}
}
2.3.操作部分设计
package com.itheima.Case;
//现在开发的主流写法,保存数据和处理数据的进行分开
public class MovieOperator {
private Movie[] movies;
public MovieOperator(Movie[] movies){
this.movies = movies; //this关键词用于指向该对象
}
/**需求1:展示系统中全部电影信息 movies = [m1,m2,m3,m4];*/
//定义一个打印信息的方法,不需要返回值,void即可
public void printAllMovies(){
System.out.println("--------系统全部电影信息如下--------");
for (int i = 0; i < movies.length; i++) {
Movie m = movies[i];
//电影的信息
System.out.println("编号:" + m.getId());
System.out.println("名称:" + m.getName());
System.out.println("价格:" + m.getPrice());
System.out.println("--------------");
}
}
/**需求2:根据电影的编号查询出该电影的详细信息*/
public void searchMovieByID(int id){
for (int i = 0; i < movies.length; i++) {
Movie m = movies[i];
if(m.getId() == id){
System.out.println("该电影的详情如下:");
System.out.println("编号:" + m.getId());
System.out.println("名称:" + m.getName());
System.out.println("价格:" + m.getPrice());
System.out.println("评分:" + m.getScore());
System.out.println("导演:" + m.getDirector());
System.out.println("演员:" + m.getActor());
System.out.println("其他信息:" + m.getInfo());
return ;//表示已经找到了电影信息,没有必要再接着执行了
}
}
//需要全面考虑各种情况
System.out.println("没有该电影信息~");
}
}
3.执行结果
4.一点碎碎念
1.利用死循环,来让直到输入为正确(按住需要循环体+ctrl+alt+t,快捷键生成选择死循环的形式
)
2.scanner需要放在死循环之外,以免占用过多的内存
3.早上用的jdk-21,运行出现了中文字符乱码
的情况,网上搜集了一下
有一个这样的做法,但还是没有解决掉问题,遂而用jdk-17,就可以了,也不是很理解是哪里的问题。
4.还需要注意一件事,建package
的时候,一定不要出现java的关键字
,否则新建的时候,会找不到java class,没办法接着下一步。