实现思路
-
添加实体类
MMovie(电影)
属性:Name(电影名称)
Type(类型)
Donny(人气) -
创建观影指南类
MMovieManager(观影指南管理类)
方法:初始化电影数据、添加 、显示全部、根据类别显示、显示人气最高的电影信息
在这里遇到一个坑,代码中用到了多个Scanner流,当你执行完输入任务后关闭任意一个,再次执行到输入语句的时候会出现一个NoSuchElementException异常。这是因为你的Scanner.close会调用System.in.close方法,System.in关闭了。你之后new Scanner并不会帮你开启System.in的流,所以报错了.所以切记不要调用 .close()方法
接下来直接上代码
1.MMovie类
public class MMovie {
private String name;
private String type;
private double donny;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public double getDonny() {
return donny;
}
public void setDonny(double donny) {
this.donny = donny;
}
public MMovie(String name, String type, double donny) {
this.name = name;
this.type = type;
this.donny = donny;
}
}
2.MMovieManager类
import java.util.ArrayList;
import java.util.Scanner;
public class MMovieManager {
ArrayList<MMovie> list=new ArrayList<MMovie>();
public MMovie getMovie() {
Scanner input=new Scanner(System.in);
System.out.println("请输入添加的电影名称:");
String name=input.nextLine();
System.out.println("请输入添加的电影类型:");
String type=input.nextLine();
System.out.println("请输入添加的电影人气:");
double donny=input.nextDouble();
return new MMovie(name,type,donny);
}
public ArrayList<MMovie> addMovie(MMovie movie){
list.add(movie);
System.out.println("添加成功!");
return list;
}
public void showMovie() {
for (MMovie mMovie : list) {
System.out.println("电影名称:"+mMovie.getName()+"\n电影类型:"+mMovie.getType()+"\n电影人气:"+mMovie.getDonny());
}
}
public void csMovie() {
Scanner input2=new Scanner(System.in);
String [] type= {"","科幻片","喜剧片","动作片"};
System.out.println("请选择分类");
System.out.println("1.科幻片");
System.out.println("2.喜剧片");
System.out.println("3.动作片");
int i=input2.nextInt();
for (MMovie mMovie : list) {
if(mMovie.getType().equals(type[i])) {
System.out.println("电影名称:"+mMovie.getName()+"\n电影类型:"+mMovie.getType()+"\n电影人气:"+mMovie.getDonny());
}
}
}
public void popularMovie() {
int flag=0;
int count=list.size();
System.out.println(count);
double label=list.get(0).getDonny();
for(int i=0;i<count;i++) {
if(list.get(i).getDonny()>=label) {
flag=i;
label=list.get(i).getDonny();
}
}
System.out.println("电影名称:"+list.get(flag).getName()+"\n电影类型:"+list.get(flag).getType()+"\n电影人气:"+list.get(flag).getDonny());
}
}
3.最后再来个测试类Test
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
boolean flag=true;
MMovie movie=null;
MMovieManager mm=new MMovieManager();
do {
System.out.println("1.添加电影");
System.out.println("2.查看电影列表");
System.out.println("3.分类管理");
System.out.println("4.显示人气最高电影");
System.out.println("5.退出该系统");
System.out.println("请选择:");
Scanner input=new Scanner(System.in);
int label=input.nextInt();
switch(label) {
case 1:
movie=mm.getMovie();
mm.addMovie(movie);
break;
case 2:
mm.showMovie();
break;
case 3:
mm.csMovie();
break;
case 4:
mm.popularMovie();
break;
case 5:
input.close();
System.exit(0);
break;
default :
System.out.println("输入有误!请重新输入!");
}
flag=false;
}while(!flag);
}
}
执行结果如下
1.添加电影
2.查看电影列表
3.分类管理
4.显示人气最高电影
5.退出该系统
请选择:
1
请输入添加的电影名称:
功夫熊猫
请输入添加的电影类型:
动作片
请输入添加的电影人气:
8.5
添加成功!
1.添加电影
2.查看电影列表
3.分类管理
4.显示人气最高电影
5.退出该系统
请选择:
1
请输入添加的电影名称:
唐人街探案
请输入添加的电影类型:
喜剧片
请输入添加的电影人气:
8.2
添加成功!
1.添加电影
2.查看电影列表
3.分类管理
4.显示人气最高电影
5.退出该系统
请选择:
1
请输入添加的电影名称:
流浪地球
请输入添加的电影类型:
科幻片
请输入添加的电影人气:
9.5
添加成功!
1.添加电影
2.查看电影列表
3.分类管理
4.显示人气最高电影
5.退出该系统
请选择:
2
电影名称:功夫熊猫
电影类型:动作片
电影人气:8.5
电影名称:唐人街探案
电影类型:喜剧片
电影人气:8.2
电影名称:流浪地球
电影类型:科幻片
电影人气:9.5
1.添加电影
2.查看电影列表
3.分类管理
4.显示人气最高电影
5.退出该系统
请选择:
3
请选择分类
1.科幻片
2.喜剧片
3.动作片
1
电影名称:流浪地球
电影类型:科幻片
电影人气:9.5
1.添加电影
2.查看电影列表
3.分类管理
4.显示人气最高电影
5.退出该系统
请选择:
3
请选择分类
1.科幻片
2.喜剧片
3.动作片
2
电影名称:唐人街探案
电影类型:喜剧片
电影人气:8.2
1.添加电影
2.查看电影列表
3.分类管理
4.显示人气最高电影
5.退出该系统
请选择:
3
请选择分类
1.科幻片
2.喜剧片
3.动作片
3
电影名称:功夫熊猫
电影类型:动作片
电影人气:8.5
1.添加电影
2.查看电影列表
3.分类管理
4.显示人气最高电影
5.退出该系统
请选择:
4
3
电影名称:流浪地球
电影类型:科幻片
电影人气:9.5
1.添加电影
2.查看电影列表
3.分类管理
4.显示人气最高电影
5.退出该系统
请选择: