观影指南(使用java语言模拟实现观影指南. 实现添加电影,查看电影列表,分类查看电影列表,显示人气最高的电影)

实现思路

  • 添加实体类
    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.退出该系统
请选择:

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是实现的步骤: 1. 创建一个Fragment类,命名为BookListFragment,并在其中创建RecyclerView。 ``` public class BookListFragment extends Fragment { private RecyclerView mRecyclerView; private BookListAdapter mAdapter; public BookListFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_book_list, container, false); // 初始化RecyclerView mRecyclerView = view.findViewById(R.id.recyclerview); mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); mAdapter = new BookListAdapter(getActivity(), getBookList()); mRecyclerView.setAdapter(mAdapter); return view; } // 模拟数据,返回书名列表 private List<String> getBookList() { List<String> list = new ArrayList<>(); list.add("Java编程思想"); list.add("Effective Java"); list.add("Android编程权威指南"); list.add("Kotlin实战"); return list; } } ``` 2. 创建一个RecyclerView的布局文件,命名为fragment_book_list.xml。 ``` <androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 3. 创建一个BookListAdapter类,继承自RecyclerView.Adapter,并实现ViewHolder。 ``` public class BookListAdapter extends RecyclerView.Adapter<BookListAdapter.ViewHolder> { private Context mContext; private List<String> mBookList; public BookListAdapter(Context context, List<String> bookList) { mContext = context; mBookList = bookList; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_book, parent, false); ViewHolder holder = new ViewHolder(view); return holder; } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { String bookName = mBookList.get(position); holder.mTextView.setText(bookName); } @Override public int getItemCount() { return mBookList.size(); } public static class ViewHolder extends RecyclerView.ViewHolder { private TextView mTextView; public ViewHolder(@NonNull View itemView) { super(itemView); mTextView = itemView.findViewById(R.id.tv_book_name); } } } ``` 4. 创建RecyclerView的item布局文件,命名为item_book.xml。 ``` <TextView android:id="@+id/tv_book_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" android:textSize="18sp" /> ``` 5. 在MainActivity中,使用FragmentManager将BookListFragment添加到主页面中。 ``` public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 将BookListFragment添加到主页面中 FragmentManager fm = getSupportFragmentManager(); FragmentTransaction transaction = fm.beginTransaction(); BookListFragment fragment = new BookListFragment(); transaction.add(R.id.fragment_container, fragment); transaction.commit(); } } ``` 6. 最后,在主页面的布局文件中添加一个FrameLayout,用于显示BookListFragment。 ``` <FrameLayout android:id="@+id/fragment_container" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 至此,我们就完成了使用Fragment在主页面中显示RecyclerView的书名列表

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值