编写星座java枚举类型型。。。。。。。。。。

&& C#如何循环一个枚举类型
C#如何循环一个枚举类型
在处理一些逻辑代码,查询条件以及一些数据的预处理的时候,枚举类型也是一个必不可少的常用类型之一,我们往往会将他们的每个元素都附加到某一个容器来进行处理。
c#循环枚举类型非常的简单只需要一个foreach就可以完成操作。
具体步骤如下:
1. 建立枚举,这里我就做了一个设备类型的例子
public enum eDeviceType
public enum eDeviceType{ &&&&M1=0,&&&&M2=1,&&&&M3=2}
2. 在使用的代码段加入foreach循环枚举
foreach (eDeviceType item in Enum.GetValues(typeof(eDeviceType)))
//这里编写你要处理的代码即可
Response.Write((int)item); //输出值
Response.Write(item.ToString()); //输出名称
foreach (eDeviceType item in Enum.GetValues(typeof(eDeviceType))){&&&&//这里编写你要处理的代码即可&&&&Response.Write((int)item); //输出值&&&&Response.Write(item.ToString()); //输出名称}
仅此一个方法就可以完成。
如无特别说明,本站文章皆为原创,若要转载,务必请注明以下原文信息:
【上一篇】
【下一篇】
一直以来专注于微软ASP.NET开发、架构设计、数据仓库、商业智能解决方案以及数据库优化的工作。
暂无相关文章
  英文原文:The Next Generation of .NET – ASP.NET vNext
  ......
在做软件开发的时候,常常会遇到图表导出功能,那么如何让导......
IIS日志的分析对于网站的状态分析尤为重要,它可以让你快速了......
此工具是我当时闲的无聊所写的一个基础代码生成的工具,当初的想法打......
我们会将最新的资讯发到您的EmailJava枚举类型的使用 - 何新宇的技术博客 - ITeye技术网站
博客分类:
1. 在J2SE5.0中要定义枚举类型是使用enum关键词,枚举类型主要提供一些常数。如下列代码定义了Action枚举类型:
public enum Action
TURN_LEFT,
TURN_RIGHT,
在Action.java中编写此段代码并编译,虽然语法上不像是在定义类,但枚举类型本质上就是一个类。所以编译完成后,会产生一个Action.class文件。
下面的代码是说明如何使用定义好的枚举类型一个示例:
public class EnumDemo
public static void main(String[] args)
doAction(Action.TURN_RIGHT);
public static void doAction(Action action)
switch(action)
case TURN_LEFT:
System.out.println("向左转");
case TURN_RIGHT:
System.out.println("向右转");
case SHOOT:
System.out.println("射击");
运行结果:向右转。其中doAction()方法所接受的变量必须是Action枚举类型,如果对此方法输入其他类型的变量,编译器会报告错误。另外,如果在上面的switch中加入了不属于Action中枚举的值,编译器也会报告错误。例如:在上面代码case SHOOT段下面再加上以下代码:
case STOP:
System.out.println("STOP");
则在编译时编译器会显示以下错误:
unqualified enumeration constant name required
case STOP:
2. 可以在一个独立的文件中声明枚举值,或是在某个类中声明枚举成员。例如:
public class EnumDemo2
private enum InnerAction {TURN_LEFT,TURN_RIGHT,SHOOT};
public static void main(String[] args)
doAction(InnerAction.TURN_RIGHT);
public static void doAction(InnerAction action)
switch(action)
case TURN_LEFT:
System.out.println("向左转");
case TURN_RIGHT:
System.out.println("向右转");
case SHOOT:
System.out.println("射击");
由于枚举类型本质上还是类,所以这段代码中枚举声明方式有些像在声明内嵌类。在编译完EnumDemo2.java后,会有一些额外的 .class文件产生,在此例中就是EnumDemo2$InnerAction.class与EnumDemo2$1.class。看到这两个文件,就可以知道实际上编译器产生了成员内部类和匿名内部类。
上面通过枚举类型设定常数的方式比旧版本的常数设定方式多了编译时期类型检查的好处。以下将深入讨论枚举类型的一些知识,以便深入理解。
2. 深入枚举类型:
定义枚举类型其实就是在定义一个类,只不过很多细节由编译器帮你补齐了,所以,某种程度上enum关键词的作用就像是class或interface.
当使用enum定义枚举类型时,实际上所定义出来的类型是继承自java.lang.Enum类。而每个被枚举的成员其实就是定义的枚举类型的一个实例,它们都被默认为final。无法改变常数名称所设定的值,它们也是public和static的成员,这与接口中的常量限制相同。可以通过类名称直接使用它们。
如1中所定义的枚举类型Action,TURN_LEFT,TURN_RIGHT,SHOOT都是Action的一个对象实例。因为是对象,所以,对象上自然有一些方法可以调用。如从Object继承焉的toString()方法被重新定义了,可以让你直接取得枚举值的字符串描述;values()方法可以让您取得所有的枚举成员实例,并以数组方式返回。您可以使用这两个方法来简单的将Action的枚举成员显示出来。静态valueOf()方法可以让您将指定的字符串尝试转换为枚举类型。可以用compareTo()方法来比较两个枚举对象在枚举时的顺序。-1之前,0位置相同,1之后。对于每个枚举成员,使用ordinal()方法,依枚举顺序得到位置索引,默认以0开始。
3.枚举上的方法:定义枚举类型基本上就是在定义类,定义枚举类型时也可以定义方法。如可以为枚举加上一些描述,而不是使用默认的toString()返回值来描述枚举值。如下代码所示:
public enum DetailAction
TURN_LEFT,TURN_RIGHT,SHOOT;
public String getDescription()
switch(this.ordinal())
return "向左转";
return "向右转";
return "射击";
可以用下面的代码测试所定义的方法是否可用。
public class DetailActionDemo
public static void main(String[] args)
for(DetailAction action : DetailAction.values())
System.out.printf("%s: %s%n",action,action.getDescription());
运行结果:
TURN_LEFT: 向左转TURN_RIGHT: 向右转SHOOT: 射击
4.枚举类型既然是类,那么也就可以有构造函数。只不过不得有公开(Public)的构造函数,这是为了避免直接对枚举类型实例化。如下代码:
public class DetailActioin2
TURN_LEFT("向左转"),TURN_RIGHT("向右转"),SHOOT("射击");
//不公开的构造函数
private DetailAction2(String description)
this.description =
public String getDescription()
非公开的构造函数最常见的一个例子就是singleton模式的应用,当某个类只能有一个实例时,可由类维护唯一的实例,这时可以将构造函数设定为私有,取用此类的开发人员就不能自行新增多个实例了。Singleton模式的简易版本代码如下:
public class Singleton
//构造函数私有,只限内部调用
private SingleTon(){};
private static Singleton instance =
public static synchronized SingleTon getInstance()
if(instance == null)
instance = new Singleton();
4. 因值而异的类实现(Value-Specific Class Bodies)
这个功能简单地说像是在使用匿名内部类来实现Command模式,它可以为每个枚举值定义各自的类本体与方法实现。
一种实现方式如下:
public interface IDescription
public String getDescription();
public enum MoreAction implements IDescription
//实现接口上的方法
public String getString() {return "向左转"}
//注意这里的枚举值分隔使用,
TURN_RIGHT
//实现接口上的方法
public String getString() {return "向右转"}
//注意这里的枚举值分隔使用,
//实现接口上的方法
public String getString() {return "射击"}
}; //注意这里的枚举值结束使用;
每个枚举成员的{与}之间是类本体,还可以在其中如同定义类一样地声明数据成员或者数据方法。测试这段代码的程序如下:
public class MoreActionDemo
public static void main(String[] args)
for(MoreAction action : MoreAction.values())
System.out.printf("%s: %s%n",action,action.getDescription());
这个例子是将因值而异的类实现用在返回枚举值的描述上,可以按照相同的方式,为每个枚举值加上一些各自的方法实现,而调用的接口是统一的。执行结果如下:
D:\Java_Test&javac IDescription.java
D:\Java_Test&javac MoreAction.java
D:\Java_Test&javac MoreActionDemo.java
D:\Java_Test&java MoreActionDemoTURN_LEFT: 向左转TURN_RIGHT: 向右转SHOOT: 射击
可能是利用枚举类型实现的接口中的方法,这里直接用
D:\Java_Test&javac IDescription.java 编译时会提示找不到getDescription()方法,所以,只好挨个来编译了。
也可以运用抽象方法去改写上面的MoreAction.java,如下:
public enum MoreAction2
TURN_LEFT{
//实现抽象方法
public String getDescription()
return "向左转";
//记得这里的枚举值分隔使用,
TURN_RIGHT{
//实现抽象方法
public String getDescription()
return "向右转";
//实现抽象方法
public String getDescription()
return "射击";
//记得这里的枚举值结束使用;
//声明抽象方法
public abstract String getDescription();
然后用MoreActionDemo2.java来测试:
public class MoreActionDemo2
public static void main(String[] args)
for(MoreAction2 action : MoreAction2.values())
System.out.printf("%s: %s%n",action,action.getDescription());
执行结果与上面相同。
浏览 15329
第4的代码定义错了,应该是enmu类型,呵呵,写的非常好哈哈*_*我也看了。。。学习了
xyheqhd888
浏览: 181583 次
来自: 秦皇岛
不要误人子弟,那根本就不是 解释器模式!!!那是Composi ...
[i][i]&div class=&quote ...
你的程序在文件输入输出流中传入agrs[0]时,会报错越界
OozinozSkyrocket类使用的对象适配器设计也许比类 ...
请问这种是应对大文件查找的办法吗?文件超过内存大小,factor = 8;
epsilon = 1.0e-6;
message = 'Press the OK button to confirm your selection.';
一个Pascal类型定义包含一个标识符,然后是一个等于号"="加一个类型说明(type specification)。一个简单的类型说明可以是先前定义过的类型标识符,一个枚举类型说明,一个其基础类型为枚举类型的子界(subrange)说明或一个非实(non-real,意思实际上是非浮点数,只是整数)标量类型。下面是类型定义部分的例子:
range1 = 0.. {subrange of integer}
range2 = 'a'..'q';
{subrange of char}
range3 = range1;
{type identifier}
= (A, B, C, D, F);
{enumeration}
passing = A..D;
{subrange of enumeration}
= (monday, tuesday, wednesday, thursday, friday, saturday, sunday);
weekday = monday..
weekend = saturday..一个数组类型说明有一个索引类型和一个元素类型。索引类型必须是一个子界或枚举类型,元素类型可以是任何Pascal类型。数组可以使多维的。看数组类型定义的例子:
1: ar1 = ARRAY [grades] OF
2: ar2 = ARRAY [(alpha, beta, gamma)] OF range2;
3: ar3 = ARRAY [weekday] OF ar2
4: ar4 = ARRAY [range3] OF (foo bar, baz);
5: ar5 = ARRAY [range1] OF ARRAY [range2] OF ARRAY[c..e] OF enum2;
6: ar6 = ARRAY [range1, range2, c..e] OF enum2;
上面可以看到ar5和ar6两种等效的定义多维数组的方式。每一维可以象ar5一样显式指定,或者象ar6的把维度值合并在一起(也就是C,Java等语言的方式)。
Pascal字符串类型是一个字符数组,且其索引类型是一个最小值为1的整数子界(subrange)。下面的类型str是一个长度为10的字符串(这个我估计用的很少吧,定长字符串,很恶心的)。
1: str = ARRAY [1..10] OF
一个Pascal记录(record)类型说明由包含在关键字RECORD和END之间的域申明构成。每个记录域(record field)可以是任何Pascal类型,包括其它的记录类型。一个冒号将域标识符列表与其类型隔开。(Pascal记录类型和C语言的Struct类型很像,但是本书不处理记录类型的变种和WITH语句)。举两个例子:
1: rec1 = RECORD
1: rec2 = RECORD
a1, a2, a3 : ARRAY [range3] OF range2;
注意rec2的域r的类型是记录类型rec1
Pascal变量申明语法与记录域的申明类似,看变量申明部分的例子:
var2, var3 : range2;
var4 : ar2
var5 : rec1;
direction : (north, south, east, west);
Pascal支持匿名(unnamed type)类型。在上面演示过的类型ar2,它的索引类型就是一个匿名枚举类型。同理,在类型ar5和ar6的定义中,第三维的索引类型是一个匿名子界类型。记录类型rec2的域a1,a2,a3的类型是一个匿名数组类型。变量direction的类型是一个匿名枚举类型。
类型和符号表
你将要编写的类型说明解析器将会在符号表中放入类型信息。
就像你在第4章做的那样,我们再一次从概念层面上着手。首先,设计一组语言无关的接口,将类型说明简单当成一个属性集合。在这些属性中,一个类型说明有一个格式,或许还有一个类型标识符。之后,开发Pascal相关的接口实现。
类型说明接口
图9-2 展示了intermediate包中相关接口TypeSpec,TypeForm,TypeKey的UML类图。
方法getForm()返回类型的格式,诸如标量,数组,和记录。方法getIdentifier()返回类型标识符对应的符号表项,或者null值假如类型匿名。所有其它的类型说明信息象属性值一样通过setAttribute()和getAttribute()方法存取。方法isPascalString()标识当前类型是否一个Pascal字符串。baseType()方法如果当前类型是子界类型则返回其基础类型,否则返回它本身。
清单9-1,9-2,9-3 分别展示TypeSpec,TypeForm和TypeKey的内容,请参考源代码对应类,这里不再显示。
Pascal类型说明实现
前面提到,一个Pascal类型的格式可以是标量,枚举,子界,数组或者记录。下面的表格展示了对每一种类型格式来说,解析器该抽取什么样的类型说明信息。
类型说明信息(要抽取的)
枚举常量标识符列表
最小索引值
最大索引值
一个独立的符号表服务于记录域的标识符
类型说明信息都以属性方式存取。
清单9-4 展示了包intermediate.typeimpl中的枚举类型(注意,这个是Java的) TypeFormImpl即Pascal的TypeForm接口实现。它的枚举值对应上表中的第一列。
1: public enum TypeFormImpl implements TypeForm
SCALAR /*标量*/,
ENUMERATION/*枚举*/,
SUBRANGE/*子界*/,
ARRAY /*数组*/,
RECORD/*记录*/;
public String toString()
return super.toString().toLowerCase();
清单9-5 展示了包intermediate.typeimpl中的枚举类型TypeKeyImpl即接口TypeKey的Pascal相关实现。其枚举值对应上表中的第二列。
1: public enum TypeKeyImpl implements TypeKey
//枚举的属性
ENUMERATION_CONSTANTS,
// 子界的属性
SUBRANGE_BASE_TYPE/*基础类型*/, SUBRANGE_MIN_VALUE/*下界*/,
SUBRANGE_MAX_VALUE/*上界*/,
// 数组属性
ARRAY_INDEX_TYPE/*索引类型*/, ARRAY_ELEMENT_TYPE/*元素类型*/,
ARRAY_ELEMENT_COUNT/*元素个数*/,
RECORD_SYMTAB /*记录对应的符号表*/
就如你在前面针对符号表项(第四章)和分析树节点(第五章)做的那样,将每种类型说明(TYpe SPecification)实现成哈希表可带来极大方便。清单9-6 展示了包intermediate.typeimpl中的类TypeSpecImpl的关键方法,它是TypeSpec接口的Pascal相关实现。更详细参见源代码。
1: public class TypeSpecImpl
extends HashMap&TypeKey, Object&
implements TypeSpec
private TypeF //对应格式
private SymTabE
//类型标识符
public TypeSpecImpl(TypeForm form)
this.form =
this.identifier =
//特殊的对String的处理
public TypeSpecImpl(String value)
this.form = ARRAY;
TypeSpec indexType = new TypeSpecImpl(SUBRANGE);
indexType.setAttribute(SUBRANGE_BASE_TYPE, Predefined.integerType);
indexType.setAttribute(SUBRANGE_MIN_VALUE, 1);
indexType.setAttribute(SUBRANGE_MAX_VALUE, value.length());
setAttribute(ARRAY_INDEX_TYPE, indexType);
setAttribute(ARRAY_ELEMENT_TYPE, Predefined.charType);
setAttribute(ARRAY_ELEMENT_COUNT, value.length());
28: //一个Pascal String首先必须得是个数组(注意char和int的互转)
public boolean isPascalString()
if (form == ARRAY) {
TypeSpec elmtType
= (TypeSpec) getAttribute(ARRAY_ELEMENT_TYPE);
TypeSpec indexType = (TypeSpec) getAttribute(ARRAY_INDEX_TYPE);
return (elmtType.baseType()
== Predefined.charType) &&
(indexType.baseType() == Predefined.integerType);
* @return 是子界则返回基类型,否则返回本身
public TypeSpec baseType()
return form == SUBRANGE ? (TypeSpec) getAttribute(SUBRANGE_BASE_TYPE)
这儿有两个构造函数。第一个给定一个格式创建一个“空”TypeSpec对象。第二个构造函数为一个String(Java的)对象创建相应的TypeSpec对象。本章开头说过,一个Pascal 字符串类型是一个带 子界索引类型的字符数组,就象isPascalString()方法验证的那样。此构造函数创建一个带整数子界索引类型且值范围从1到字符串(Java的)长度的字符数组。
图9-3 展示了针对几个Pascal类型定义样例其中符号表项和TypeSpec对象之间的关系。值得留意的有:
类型标识符的符号表项指向相应的TypeSpec对象,而它反过来指向这个符号表项。不过匿名类型的类型说明(比如图中的匿名数组索引类型)没有指向任何符号表项。
枚举类型说明的ENUMERATION_CONSTANTS属性是其常量标识符所对应的符号表项形成的数组列表。
字节类型说明有SUBRANGE_MIN_VALUE和SUBRANGE_MAX_VALUE属性,它的SUBRANGE_BASE_TYPE属性值为其基本类型说明。
数组类型说明的ARRAY_INDEX_TYPE和ARRAY_ELEMENT_TYPE属性分别是数组索引和数组元素的类型说明。
记录类型说明的RECORD_SYMTAB属性指向包含此记录域标识符的符号表
图9-3:各种类型定义下SymTabEntry对象(淡灰色)和TypeSpec对象(暗灰色)。TypeKeyImpl属性键名以斜体大写呈现。
清单9-7 展示了包intermediate中的类TypeFactory,它创建TypeSpec对象。它有两个静态方法为别对应TypeSpecImpl的不同构造函数
此时再次使用“工厂方法”设计模式,使得类型说明客户端保持对具体类型说明实现的松耦合。
清单9-7 类型工厂的代码
1: public class TypeFactory
public static TypeSpec createType(TypeForm form)
return new TypeSpecImpl(form);
public static TypeSpec createStringType(String value)
return new TypeSpecImpl(value);
作用域(scope)和符号表堆栈
作用域(scope)指的是源程序的某部分,在此范围内,某些标识符能被使用(换句话说,是程序中使得哪些标识符生效的任何位置)。也可以说任何一个标识符都有一个作用域或属于一个作用域。作用域与嵌套层次和符号表堆栈(第四章有给过简要介绍)关系紧密。
Pascal有很多命名语言预定义元素的标识符,比如各种类型如integer、real、boolean、char和布尔常量true和false。在后面章节中,你将会碰到命名预定义函数的标识符如writeln。默认情况下,预定义的全局标识符的作用域是整个程序(程序可以有1个或多个文件构成)。他们被隐式的定义在嵌套层0作用域即全局作用域。程序的名字同样在这个嵌套层定义。
本章之前你仅仅碰到过只有一个符号表的符号表堆栈,它在嵌套层0,也就是把所有的标识符都当作了全局标识符。实际上在一个程序的最顶层定义的所有标识符(常量名,类型,变量,函数过程等)是在嵌套层1即程序域(program scope)。(目前有两个作用域了,一个全局作用域 global scope,一个程序作用域 program scope)
每一个Pascal记录定义为它的域标识符创建一个新的作用域。这个新域的嵌套层次比记录定义本身所在的作用域层次高一级。嵌套的记录定义创建更高的嵌套层级。类似的你将在第11章看到,每一个声明过的Pascal过程或函数创建的新作用域嵌套层次取决于函数的嵌套深度。
标识符可以被嵌套作用域重定义(也就是覆盖)。例如,一个程序可能定义了名为str,类型为string的标识符。但程序还可有一个记录(record)定义了str为一个域(field)的名字。在记录的嵌套域中,作为域重定义的str有效,而外部程序域中的str定义被隐藏。但是在记录之外,也就是程序域中,str的定义是作为一个字符串类型应用的。
这个讨论带来两个重要问题:
每个作用域必须有它自己单独的符号表。对于全局标识符在嵌套层0上有一个符号表。程序作用域也有一个符号表在层级1存储它包含的标识符。每个记录定义有一个符号表存储她的域标识符。每个函数(routing,包含过程和函数)针对它的标识符都有独立的符号表。
当解析器从上直下分析源程序时,它将进入和退出作用域(比如进入一个函数,返回一个函数),所以这些作用域最好将在符号表上维护。每次解析器进入一个作用域,它必须把此域的符号表放如堆栈,且将嵌套层次加1。当解析器退出此作用域时,它必须将堆栈上的此域对应的符号表弹出,且将嵌套层次减1。符号表堆栈将随着解析器进入更深的嵌套而增长。
图9-4 演示了符号表堆栈的概念,解析之前的符号表堆栈已经随着RECORD类型形成(注意这个RECORD是源程序中RECORD字符,意思是到RECORD这已经形成了堆栈的层级关系)。预定义的全局标识符如integer、real、程序名称Test在层级0的符号表。程序作用域定义的标识符比如epsilon和rec在层级1的符号表。RECORD类型说明推入一个层级为2的新符号表到堆栈上,它包含域标识符a,x,y,z,这个符号表在解析器完成RECORD类型解析之后将会被弹出。
第4章中已经编写了包intermediate中的接口SymTabStack。现在加几个新的方法用来推入(push)和弹出符号表,以及存取程序标识符,就如清单9-8显示的那样。
* 存取程序标识符
* @param entry
5: public void setProgramId(SymTabEntry entry);
6: public SymTabEntry getProgramId();
* 推入一个新的符号表
* @return 刚创建的
11: public SymTab push();
* 推入一个已存在的符号表
* @param symTab
17: public SymTab push(SymTab symTab);
* 弹出符号表,层级减1
22: public SymTab pop();
方法setProgramId()和getProgramId针对的是主程序标识符对应的符号表项。方法push()和pop()分别从符号表堆栈上推入和弹出符号表。这儿有两个push方法,一个创建一个新的符号表而另外一个推入现存符号表。
包intermediate.symtabimpl中的类SymTabStackImpl必须包含一个新的域:
//主程序标识符的符号表项
private SymTabEntry programId;
清单9-9 展示了类SymTabStackImpl中的新方法push()和pop()的实现,还有一个新版本的lookup()方法。
1: public SymTabEntry lookup(String name)
SymTabEntry foundEntry =
// 搜索当前及更高层级(父层级)
for (int i = currentNestingL (i &= 0) && (foundEntry == null); --i)
foundEntry = get(i).lookup(name);
return foundE
public SymTabEntry getProgramId() {
return this.programId;
public void setProgramId(SymTabEntry entry) {
this.programId =
public SymTab push()
SymTab symTab = SymTabFactory.createSymTab(++currentNestingLevel);
add(symTab);
return symT
public SymTab push(SymTab symTab)
++currentNestingL
add(symTab);
return symT
public SymTab pop()
SymTab symTab = get(currentNestingLevel);
remove(currentNestingLevel--);
return symT
两个push()方法都会增加提高嵌套层级而pop()方法降低层级。方法lookup现在不仅搜索当前作用域,如有必要还包括父作用域(包含此所用域的更大一级的作用域)。它从栈订的符号表里开始搜索某个标识符,一直到包含这个标识符的符号表位置,或者找不到返回。换句话说,方法先在当前作用域搜寻这个标识符,如有必要,一级一级的扩散它的作用域范围(直到全局作用域,即嵌套层级为0的那个)。《C语言程序设计》第8章
结构体、共用体与枚举类型_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
喜欢此文档的还喜欢
《C语言程序设计》第8章
结构体、共用体与枚举类型
与​大​学​教​材​《​C​语​言​程​序​设​计​》​配​套
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:531.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢c++编写输入星座如何输出幸运指数代码?_百度知道
c++编写输入星座如何输出幸运指数代码?
提问者采纳
=kaiShi&&riQi&lt:先判断输入的日期是那个属于那个星座然后打印出类里的信息就行了你可以自己去实现下锻炼下自己日期的格式你可以从int riQi如输入0228就代表2月28号用if语句 if(riQi&/enum xingzuo{}在{}里写入12个星座的名字建立一个类建一个类的数组分别存入12个星座的信息在类里放入星座的开始日期 int kaiShi &#47:0220结束日期 int jieShu /其他的特征代码;//
0321……/如;&#47建立一个枚举星座 &#47
提问者评价
其他类似问题
1、定义一个星座结构体(枚举)2、定义对应每个星座编辑所谓的××指数3、输入→判断→查找→输出
按默认排序
其他1条回答
可以用switch来做:9月24日 - 10月23日天蝎座的日期:3月21日 - 4月20日金牛座的日期:2月20日 - 3月20日以上是星座划分:8月24日 - 9月23日天秤座的日期:7月23日 - 8月23日处女座的日期:4月21日 - 5月21日双子座的日期:1月21日 - 2月19日双鱼座的日期:5月22日 - 6月21日巨蟹座的日期白羊座的日期:12月22日 - 1月20日水瓶座的日期:10月24日 - 11月22日射手座的日期:11月23日 - 12月21日魔羯座的日期:6月22日 - 7月22日狮子座的日期
星座的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 mysql枚举类型 的文章

 

随机推荐