java实现图形卡片排序游戏

本文实例为大家分享了java实现图形卡片排序游戏的具体代码,供大家参考,具体内容如下

掌握类的继承、多态性使用方法以及接口的应用。
输入格式:
首先,在一行上输入一串数字(1~4,整数),其中,1代表圆形卡片,2代表矩形卡片,3代表三角形卡片,4代表梯形卡片。各数字之间以一个或多个空格分隔,以“0”结束。例如: 1 3 4 2 1 3 4 2 1 3 0
然后根据第一行数字所代表的卡片图形类型,依次输入各图形的相关参数,例如:圆形卡片需要输入圆的半径,矩形卡片需要输入矩形的宽和长,三角形卡片需要输入三角形的三条边长,梯形需要输入梯形的上底、下底以及高。各数据之间用一个或多个空格分隔。
输出格式:
如果图形数量非法(小于0)或图形属性值非法(数值小于0以及三角形三边不能组成三角形),则输出Wrong Format。
如果输入合法,则正常输出,所有数值计算后均保留小数点后两位即可。输出内容如下:
排序前的各图形类型及面积,格式为图形名称1:面积值1图形名称2:面积值2 …图形名称n:面积值n,注意,各图形输出之间用空格分开,且输出最后存在一个用于分隔的空格;
排序后的各图形类型及面积,格式同排序前的输出;
所有图形的面积总和,格式为Sum of area:总面积值。
输入样例1:
在这里给出一组输入。例如:

1 5 3 2 0

输出样例1:
在这里给出相应的输出。例如:

Wrong Format

输入样例2:
在这里给出一组输入。例如:

4 2 1 3 0
3.2 2.5 0.4 2.3 1.4 5.6 2.3 4.2 3.5

输出样例2:
在这里给出相应的输出。例如:

The original list:
Trapezoid:1.14 Rectangle:3.22 Circle:98.52 Triangle:4.02
The sorted list:
Circle:98.52 Triangle:4.02 Rectangle:3.22 Trapezoid:1.14
Sum of area:106.91

输入样例3:
在这里给出一组输入。例如:

4 2 1 3 0
3.2 2.5 0.4 2.3 1.4 5.6 2.3 4.2 8.4

输出样例3:
在这里给出相应的输出。例如:

Wrong Format

参考代码如下:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Main {
 //在Main类中定义一个静态Scanner对象,这样在其它类中如果想要使用该对象进行输入,则直接
 //使用Main.input.next…即可(避免采坑)
 public static Scanner input = new Scanner(System.in);
 public static void main(String[] args){
 ArrayList<Integer> list = new ArrayList<Integer>();
 int num = input.nextInt();
 while(num != 0){
 if(num < 0 || num > 4){
 System.out.println("Wrong Format");
 System.exit(0);
 }
 list.add(num);
 num = input.nextInt();
 }
 DealCardList dealCardList = new DealCardList(list);
 if(!dealCardList.validate()){
 System.out.println("Wrong Format");
 System.exit(0);
 }
 dealCardList.showResult();
 input.close();
 }
 }
class Card{
 Shape shape;
 Card(){

 }
 Card(Shape shape){
 this.shape=shape;
 }
 public Shape getShape() {
 return shape;
 }
 public void setShape(Shape Shape) {
 this.shape=shape;
 }

}
class DealCardList{
 ArrayList<Card> cardList=new ArrayList<Card>();
 DealCardList(){

 }
 DealCardList(ArrayList<Integer> list){
 for(int i=0;i<list.size();i++)
 {
 if(list.get(i)==1)
 {
 double r=Main.input.nextDouble();
 Circle circle=new Circle(r);
 Card card=new Card(circle);
 card.getShape().setShapeName("Circle");
 cardList.add(card);
 }
 if(list.get(i)==2) {
 double a=Main.input.nextDouble();
 double b=Main.input.nextDouble();
 Rectangle rectangle=new Rectangle(a,b);
 Card card=new Card(rectangle);
 card.getShape().setShapeName("Rectangle");
 cardList.add(card);
 }
 if(list.get(i)==3) {
 double a=Main.input.nextDouble();
 double b=Main.input.nextDouble();
 double c=Main.input.nextDouble();
 Triangle triangle=new Triangle(a,b,c);
 Card card=new Card(triangle);
 card.getShape().setShapeName("Triangle");
 cardList.add(card);
 }
 if(list.get(i)==4) {
 double a=Main.input.nextDouble();
 double b=Main.input.nextDouble();
 double c=Main.input.nextDouble();
 Traperoid traperoid=new Traperoid(a,b,c);
 Card card=new Card(traperoid);
 card.getShape().setShapeName("Trapezoid");
 cardList.add(card);
 }
 }
 }
 public boolean validate() {
 for(int i=0;i<cardList.size();i++)
 {if(!cardList.get(i).getShape().vaildate())
  return false;}
 return true;
 }
 public void cardSort() {
 for(int k=0;k<cardList.size();k++)
 for(int i=k+1;i<cardList.size();i++)
 {
 if(cardList.get(k).getShape().getArea()<cardList.get(i).getShape().getArea())
  Collections.swap(cardList, k, i);
 }

 }
 public double getAllArea() {
 double s=0;
 for(int i=0;i<cardList.size();i++)
 s=s+cardList.get(i).getShape().getArea();
 return s;
 }
 public void showResult() {
 System.out.println("The original list:");
 for(int i=0;i<cardList.size();i++)
 System.out.print(cardList.get(i).getShape().getShapeName()+":"+String.format("%.2f",cardList.get(i).getShape().getArea())+" ");
 System.out.println();
 System.out.println("The sorted list:");
 cardSort();
 for(int i=0;i<cardList.size();i++)
 System.out.print(cardList.get(i).getShape().getShapeName()+":"+String.format("%.2f",cardList.get(i).getShape().getArea())+" ");
 System.out.println();
 System.out.println("Sum of area:"+String.format("%.2f",getAllArea()));
 }
}
 class Shape {
 private String shapeName;
 Shape(){

 }
 Shape(String shapeName){
 this.shapeName=shapeName;
 }
 public String getShapeName() {
 return shapeName;
 }
 public void setShapeName(String shapeName) {
 this.shapeName=shapeName;
 }
 public double getArea() {
 return 0.0;
 }
 public boolean vaildate() {
 return true;
 }

}
class Circle extends Shape{
 private double radius;
 Circle(){

 }
 Circle(double radius){
 this.radius=radius;
 }
 public double getArea() {
 return Math.PI*radius*radius;
 }
 public boolean vaildate() {
 if(radius>0)
 return true;
 else return false;
 }
}
class Rectangle extends Shape{
 private double width,length;
 Rectangle (double width,double length){
 this.width=width;
 this.length=length;
 }
 public double getArea() {
 return width*length;
 }
 public boolean vaildate() {
 if(width>0&&length>0)
 return true;
 else return false;
 }

}
class Triangle extends Shape{
 double side1,side2,side3;
 Triangle(double side1,double side2,double side3){
 this.side1=side1;
 this.side2=side2;
 this.side3=side3;
 }
 public double getArea() {
 double c=(side1+side2+side3)/2;
 double s=Math.sqrt(c*(c-side1)*(c-side2)*(c-side3));
 return s;
 }
 public boolean vaildate() {
 if(side1+side2>side3&&side1+side3>side2&&side2+side3>side1)
 return true;
 else
 return false;
 }

}
class Traperoid extends Shape{
 private double topSide,bottomSide,height;
 Traperoid(){

 }
 Traperoid(double topSide,double bottomSide,double height){
 this.bottomSide=bottomSide;
 this.height=height;
 this.topSide=topSide;
 }
 public double getArea() {
 return (topSide+bottomSide)*height/2;
 }
 public boolean validate() {
 if(topSide>0&&bottomSide>0&&height>0)
 return true;
 else return false;
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java如何对map进行排序详解(map集合的使用)

    今天做统计时需要对X轴的地区按照地区代码(areaCode)进行排序,由于在构建XMLData使用的map来进行数据统计的,所以在统计过程中就需要对map进行排序. 一.简单介绍Map 在讲解Map排序之前,我们先来稍微了解下map.map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等.其中这四者的区别如下(简单介绍): HashMap:我们最常用的Map,它根据key的HashCode 值来存储数据,根据key可以直接

  • java冒泡排序算法代码

    复制代码 代码如下: /** * 原理: * 进行n次循环,每次循环从后往前对相邻两个元素进行比较,小的往前,大的往后 *  * 时间复杂度: * 平均情况:O(n^2) * 最好情况:O(n) * 最坏情况:O(n^2) * * 稳定性:稳定 **/public class 冒泡排序 { public int[] bubbleSort(int[] a, int n) {        for (int i = 0; i < n; i++) {            int flag = 0; 

  • Java实现按中文首字母排序的具体实例

    要实现"按中文首字母排序"操作,可以使用java.util包下的Arrays类的sort()函数. Arrays类包含用来操作数组(比如排序和搜索)的各种方法. 比如对于排序操作的sort()函数,重载了多种静态函数以适应不同情况下的需要. 以下,我们应用最后一个重载函数来实现"按中文首字母排序": 复制代码 代码如下: sort(T[] a, Comparator<? super T> c) 根据指定比较器产生的顺序对指定对象数组进行排序. 代码举例:

  • java ArrayList集合中的某个对象属性进行排序的实现代码

    开发中有时候需要自己封装分页排序时,List如何对某一属性排序呢,分享一个小实例,大家共勉,希望能对大家有用,请多多指教. 1.Student的Bean如下: public class Student { private int age; private String name; private String weight; public String getWeight() { return weight; } public void setWeight(String weight) { th

  • java操作mongodb基础(查询 排序 输出list)

    复制代码 代码如下: package com.infomorrow.webroot; import java.util.List; import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBCollection;import com.mongodb.DBCursor;import com.mongodb.DBObject;import com.mongodb.MongoClient; public cl

  • java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述

    算法是在有限步骤内求解某一问题所使用的一组定义明确的规则.通俗点说,就是计算机解题的过程.在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法.前者是推理实现的算法,后者是操作实现的算法. 一个算法应该具有以下五个重要的特征: 1.有穷性: 一个算法必须保证执行有限步之后结束: 2.确切性: 算法的每一步骤必须有确切的定义: 3.输入:一个算法有0个或多个输入,以刻画运算对象的初始情况: 4.输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果.没有输出的算法是毫无意义的:

  • java中List对象排序通用方法

    本文实例讲述了java中List对象排序通用方法.分享给大家供大家参考.具体分析如下: 在数据库中查出来的列表list中,往往需要对不同的字段重新排序,一般的做法都是使用排序的字段,重新到数据库中查询.如果不到数据库查询,直接在第一次查出来的list中排序,无疑会提高系统的性能. 只要把第一次查出来的结果存放在session中,就可以对list重新排序了.一般对list排序可以使用Collections.sort(list),但如果list中包含是一个对象的话,这种方法还是行不通的.那要怎么排序

  • Java对List进行排序的两种实现方法

    前言 Java.util包中的List接口继承了Collection接口,用来存放对象集合,所以对这些对象进行排序的时候,要么让对象类自己实现同类对象的比较,要么借助比较器进行比较排序. 学生实体类,包含姓名和年龄属性,比较时先按姓名升序排序,如果姓名相同则按年龄升序排序. 第一种:实体类自己实现比较 (实现comparable接口:public interface Comparable<T> ,里面就一个方法声明:public int compareTo(T o); ) 示例代码: publ

  • java实现图形卡片排序游戏

    本文实例为大家分享了java实现图形卡片排序游戏的具体代码,供大家参考,具体内容如下 掌握类的继承.多态性使用方法以及接口的应用. 输入格式: 首先,在一行上输入一串数字(1~4,整数),其中,1代表圆形卡片,2代表矩形卡片,3代表三角形卡片,4代表梯形卡片.各数字之间以一个或多个空格分隔,以"0"结束.例如: 1 3 4 2 1 3 4 2 1 3 0 然后根据第一行数字所代表的卡片图形类型,依次输入各图形的相关参数,例如:圆形卡片需要输入圆的半径,矩形卡片需要输入矩形的宽和长,三角

  • java实现单词搜索迷宫游戏

    本文实例讲述了java实现单词搜索迷宫游戏.分享给大家供大家参考.具体分析如下: 我们在杂志上,经常能够看到找单词的小游戏,在一个二维表格中,存在各种字母,我们可以从八个方向找单词.这个用计算机处理十分方便,但是,算法的好坏很重要,因为要是用蛮力算法实现,那么耗费的时间是不可想象的. 这是数据结构与问题求解Java语言描述一书中给的实现思路 完整代码如下,注释写的很明白了 import java.io.BufferedReader; import java.io.FileReader; impo

  • Java实现24点小游戏

    本文实例为大家分享了Java实现24点小游戏的具体代码,供大家参考,具体内容如下 程序设计要求: 24点游戏是经典的纸牌益智游戏. 常见游戏规则: 从扑克中每次取出4张牌.使用加减乘除,第一个能得出24者为赢.(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏. 基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题. 1.程序风格良好(使用自定义注释模板) 2.列出表

  • java实现贪吃蛇小游戏

    本文实例为大家分享了java实现贪吃蛇小游戏的具体代码,供大家参考,具体内容如下 这是MVC模式的完整Java项目,编译运行SnakeApp.java即可开始游戏. 可扩展功能: 1.积分功能:可以创建得分规则的类(模型类的一部分), 在GameController的run()方法中计算得分 2.变速功能:比如加速功能,减速功能,可以在GameController的keyPressed()方法中针对特定的按键设置每一次移动之间的时间间隔,将Thread.sleep(Settings.DEFAUL

  • 利用java开发简易版扫雷游戏

    1.简介 学了几周的Java,闲来无事,写个乞丐版的扫雷,加强一下Java基础知识. 2.编写过程 编写这个游戏,一共经历了三个阶段,编写了三个版本的游戏代码. 第一版:完成了扫雷游戏的基本雏形,实现了游戏的基本功能,游戏运行在cmd黑窗口中,以字符绘制游戏界面,无图形化窗口,通过控制台输入字符完成游戏控制.代码放置在一个java文件中,代码的可读性以及可扩展性都比较差. 第二版:在第一版实现基本功能的基础之上,对游戏代码进行重构,根据各部分的功能创建多个类,增加代码注释,提高代码的可读性以及可

  • Java集合案例之斗地主游戏

    本文实例为大家分享了Java集合案例之斗地主游戏的具体代码,供大家参考,具体内容如下 题目要求: 通过自制54张扑克牌,发给3人,留下3张底牌,分别显示不同人的手牌与底牌达到斗地主的游戏需求 算法思想: 1.4种花色,每种13张牌,使用for嵌套循环,产生52张牌再加入大小王 创建牌与花色: String[] hs = {"♠", "♥", "♣", "♦"}; String[] number = {"3"

  • Java程序图形用户界面设计之按钮与布局

    目录 按钮组件 JButton JButton类常用方法 按钮上显示图片 布局管理器 FlowLayout BorderLayout GridLayout CardLayout 绝对定位 Java程序设计 图形用户界面[四] 按钮组件 JButton JButton组件表示一个普通的按钮 JButton类常用方法 方法 作用 public JButton() throws HeadlessException 创建一个Button对象 public JButton(String label) th

  • Java实现简单的迷宫游戏详解

    目录 前言 主要设计 功能截图 代码实现 窗口布局 核心算法 总结 前言 人类建造迷宫已有5000年的历史.在世界的不同文化发展时期,这些奇特的建筑物始终吸引人们沿着弯弯曲曲.困难重重的小路吃力地行走,寻找真相.迷宫类小游戏应运而生.在游戏中,迷宫被表现为冒险舞台里,藏有各式各样奇妙与谜题或宝藏的危险区域.型态有洞窟.人工建筑物.怪物巢穴.密林或山路等.迷宫内有恶徒或凶猛的生物(真实存在或想像物体都有)徘徊,其中可能会有陷阱.不明设施.遗迹等. <简单迷宫>游戏是用java语言实现,采用了sw

  • 基于Java实现经典蜘蛛纸牌游戏

    目录 效果展示 游戏结构 核心代码 AboutDialog.java类 PKCard.java类 SpiderMenuBar.java类 Spider.java 类 效果展示 前面的导入过程这里就不多说了,不会的可以自己去问度娘.导入后,选择Spider.java类直接运行就可以了,下面是游戏运行的截图: 游戏结构 核心代码 代码显示:代码注释很清楚 ,大家可以自行参考. AboutDialog.java类 import javax.swing.*; import java.awt.*; /*

  • Java实现简单的五子棋游戏示例代码

    目录 项目结构 核心代码 ArrComparator.java类 ChessMap.java类 ChessPanel.java类 效果图展示 项目结构 这个是在网上找的资源,出处记不得了,记录一下.程序的总体结构,很简单的: 核心代码 代码如下: ArrComparator.java类 import java.util.Comparator; /** * 排序 Comparator */ class ArrComparator implements Comparator<Object> { i

随机推荐