十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
import java.util.ArrayList;
创新互联主要从事网站设计、做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务鸡泽,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
import java.util.List;
import java.util.Scanner;
public class GradeStatistic {
public static void main(String[] args) {
GradeStatistic gs = new GradeStatistic();
ListMark list = new ArrayListMark();
float sum = 0;
while(true){
Scanner sc = new Scanner(System.in);
System.out.print("Please input student name: ");
String name = sc.nextLine();
if(name.equals("end")){
break;
}
System.out.print("Please input student score: ");
float score = sc.nextFloat();
sum += score;
list.add(gs.new Mark(name, score));
}
float max = list.get(0).getScore();
float min = list.get(0).getScore();
for(Mark mark: list){
if(max mark.getScore()){
max = mark.getScore();
}
if(min mark.getScore()){
min = mark.getScore();
}
}
float average = sum / list.size();
System.out.println("Average is: " + average);
System.out.println("Max is: " + max);
System.out.println("Min is: " + min);
}
private class Mark{
private String name;
private float score;
public Mark(String name, float score){
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public float getScore() {
return score;
}
}
}
----------------------
Please input student name: Zhang san
Please input student score: 100
Please input student name: Li Si
Please input student score: 91
Please input student name: Ec
Please input student score: 35
Please input student name: ma qi
Please input student score: 67
Please input student name: end
Average is: 73.25
Max is: 100.0
Min is: 35.0
你没有发现Java的代码在J2EE里占的比重,那说明你对Java世界里的东西了解还是太少了。Java世界里所有的东西都是来源于你说的那些看起来很少的Java代码,这些是基础。
你还记得你做Java Swing开发或者J2EE开发都需要JDK吧,都需要那些Java包中的类来实现Java世界的功能,这些包的源码就是用Java语言写的,Java语言的逻辑也在那里。这些源码可以在JDK的安转文件中看到,我忘记是那个文件夹下了。你可以找一找,这些类都是.java文件。这是java语言开发者为了让程序员更方便,它们来实现更多的业务逻辑,对外只提供实现功能的方法,而语言的使用者不必费很多脑筋来考虑业务逻辑的事情了。更多的时间放在架构上,反过来再说一下,Java语言安全性高是Java语言的一个特点,如果你感觉 J2EE里用的Java语言的源代码少而认为java 不重要了?那么J2EE的安全又是从哪来的呢? J2EE的安全性还是来源于Java语言本身的安全。
J2EE开发有多个框架,这些框架本身就是Java语言实现的。没个框架管理不同的模块,每个模块执行一部分功能,这样分工明确,有利于开发人员地分工,而且更利于代码的维护和扩展。你没看到源码少是因为Sun公司已经用Java语言实现了一个个框架,这些框架相当于一个平台,剩下的就是你用户利用这些平台需要你根据自己的功能实现自己的业务逻辑了,这些就要你自己设计了。而你自己的设计又会封装在别的组建里,比如JavaBean技术。你在网上看到的那些源码全是JSP标签和HTML标签就对了,我们做开发的时候要求业务逻辑一点不准在页面上出现,业务逻辑的Java代码只能通过Servlet,Spring,Struts来管理可以说后台所有的业务逻辑都是用Java语言实现的而页面的效果是JsP标签和HTML标签实现的。所以你在页面部分是看不到Java语法的代码的。(好的程序是这样的)
顺便说一句,Java语言开发的都是大的项目,因为地安全性,跨平台型和移植性和可扩展性是其他语言无法比拟的。
J2EE中一些常用的框架:(引自百度百科)
Java开源项目
----------------------------------------------------
Spring Framework 【Java开源 J2EE框架】
Spring 是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的 Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。 Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了 Hibernate和其他O/R mapping解决方案。Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。 Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务--如果你需要--还能实现你自己的 aspects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVC Web框架。【SpringIDE:Eclipse平台下一个辅助开发插件】.
WebWork 【Java开源 Web框架】
WebWork 是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。WebWork目前最新版本是2.1,现在的WebWork2.x前身是Rickard Oberg开发的WebWork,但现在WebWork已经被拆分成了Xwork1和WebWork2两个项目。 Xwork简洁、灵活功能强大,它是一个标准的Command模式实现,并且完全从web层脱离出来。 Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL – the Object Graph Notation Language),IoC(Inversion of Control倒置控制)容器等。 WebWork2建立在Xwork之上,处理HTTP的响应和请求。WebWork2使用ServletDispatcher将HTTP请求的变成 Action(业务层Action类), session(会话)application(应用程序)范围的映射,request请求参数映射。WebWork2支持多视图表示,视图部分可以使用 JSP, Velocity, FreeMarker, JasperReports,XML等。在WebWork2.2中添加了对AJAX的支持,这支持是构建在DWR与Dojo这两个框架的基础之上.【EclipseWork:用于WebWork辅助开发的一个Eclipse插件】
Struts 【Java开源 Web框架】
Struts 是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。【StrutsIDE:用于Struts辅助开发的一个Eclipse插件】
Hibernate 【Java开源 持久层框架】
Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Eclipse平台下的Hibernate辅助开发工具:【Hibernate Synchronizer】【MiddlegenIDE】
Quartz 【Java开源 Job调度】
Quartz 是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz 1.5.0。
Velocity 【Java开源 模板引擎】
Velocity 是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。 Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为Turbine web开发架构提供模板服务(template service)。Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。 【VeloEclipse :Velocity在Eclipse平台下的一个辅助开发插件】
IBATIS 【Java开源 持久层框架】
使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象, 这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL 语句。相对Hibernate等 “全自动”ORM机制而言,ibatis 以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。作为“全自动”ORM 实现的一种有益补充,ibatis 的出现显 得别具意义。
Compiere ERPCRM 【Java开源ERP与CRM系统】
Compiere ERPCRM为全球范围内的中小型企业提供综合型解决方案,覆盖从客户管理、供应链到财务管理的全部领域,支持多组织、多币种、多会计模式、多成本计算、多语种、多税制等国际化特性。易于安装、易于实施、易于使用。只需要短短几个小时,您就可以使用申购-采购-发票-付款、报价-订单-发票-收款、产品与定价、资产管理、客户关系、供应商关系、员工关系、经营业绩分析等强大功能了。
Roller Weblogger 【Java开源 Blog博客】
这个weblogging 设计得比较精巧,源代码是很好的学习资料。它支持weblogging应有的特性如:评论功能,所见即所得HTML编辑,TrackBack,提供页面模板,RSS syndication,blogroll管理和提供一个XML-RPC 接口。
至于Java Swing中的方法在J2EE中是否可以用,你可以这样理解,J2EE开发过程中和Java Swing开发使用了相同的类,那么就可以使用相同的方法,要是使用不同的类, 那要看这些类是不是出自一个祖宗,而且这个祖宗是不是提供了大家通用的方法。
比如Java Swing 开发中页面使用到了 JFrame类,所以可以使用其中的getText()方法,可J2EE中不使用这个类,那么就不能使用getText()的方法了。可以在两个开发中都是用到了String类,那么这个开发过程中就都可以用这个类的方法啊!
顺便说一句,Java Swing中的方法可能在J2EE中不能使用吧,毕竟是两个方向的开发一个是C/S模式,一个是B/S模式,至少我现在还没看到Java Swing中的一些类在J2EE中使用的比如Frame类。
希望你能更多的了解下,也告诉我一下!
写的有点乱,希望读者能看明白
#包括
#包括
#包括中
#定义N 50 / *定义符号常量,代表的学生人数最多* /
诠释计数= 0; / *全局变量记录数组的当前位置* /
学生/ *定义结构类型,代表学生信息* /
{
字符名[10]; / *学生姓名* /
字符数[10]; / *学生ID * /
浮点数学/数学成绩* /
浮动英语/英语成绩* /
};的
输入(学生* ARR)/ *函数声明无效,输入学生信息* /
无效排序(学生* ARR)/ *函数声明的订单* /
无效的发现(学生* ARR)/ *函数声明,找一个学生信息* /
无效的主要()
{
的char selmenu; / *定义一个局部变量,用来记录用户选择功能编号* / 学生螺柱[N]; / *定义结构的数组,用于记录学生信息* /
/ *循环接口* /
{系统(“CLS”); / *清屏功能* /
的printf(“\ N \ N”);
的printf(“\ \ T \ T \ T学生成绩管理系统\ N \ N”);
的printf(“\ \ T \ T \ T1输入学生成绩\ N”);
的printf(“\ T \ T \ T \ T2。按排榜\ N”);
的printf(“\ \ T \ T \ T3查找学生信息\ N”); BR /的printf(“\吨\ T \ T \ T4退出\ n \ n已”);
的printf(“\ T \ T \输入功能选择号码(1-4):”);
fflush的(STDIN); / *清空输入缓冲区* /
scanf函数(“%c”的,selmenu)/ *接受用户选择功能号* /
开关( selmenu)/ *输入一个不同的数字来调用相应的函数来完成功能* /
{
case'1:
输入(双头); / *调用输入学生信息的功能, ,参数学生信息数组名* /
打破;
case'2:
排序(螺柱)/ *召唤出排榜函数的参数是数组名* /
;
case'3':
发现(螺柱)/ *由学生呼叫号码和姓名查找学生信息的功能* /
突破;
}
}(selmenu! = '4'); / *确定是否退出* /
的printf(“\ n \ n已\ T \ T \ T ---------- -----谢谢---------------- \ N \ N“); / *输出告别* /
} 无效输入(学生* ARR)/ *定义输入学生信息的功能* /
{
字符CH / *接收用户指令* /
/ *使用周期,学生成绩由用户输入控制* / {
系统(“CLS”);
的printf(“\ N%d的学生输入信息:\ N输入学生的姓名:”数+ 1); BR / scanf函数(“%”,编曲[计]名);
的printf(“\ n输入学号:”);
scanf函数(“%”,改编[计]数字);
的printf(“\ n输入的数学成绩:”);
scanf函数(“%f”的改编[计]数学);
的printf(“\ n输入的英文结果:“);
scanf函数(”%f“的改编[计]);
数+ / *记录当前输入学生信息,一些* / 的printf(“\ N是否继续输入(Y / N)\ N”);
fflush的(STDIN); / *清空输入缓冲区* /
CH = getchar函数();
}(CH =='Y'| | CH =='Y')/ *确定用户的指令,是否继续输入* /
} 无效排序(学生* ARR)的总成绩排/ *定义列表功能* /
{
INT I,J,K; / *定义循环变量I,J,最低数量的位置k * / /结构学生t; / *定义交换的临时变量* /
如果(计数== 0)/ *阵列的学生表现,以确定是否存在* /
的printf(“没有学生的成绩,先记录在学生信息\ N“);
其他
{
(I = 0; 计数1 + +)/ *类型的学生选择方法成就* / {
K =我;
(J = i +1的; J 数; J + +)/ * k是到达[我]改编[计数1 ,最低数量的位置* /
((ARR [K]。数学+到达[K]。英语)(ARR [J]。数学+改编[J]。英语)) K = J br(k! = I)/ *如果最小的号码是不是比较列第一,交换* /
T =到达[K]; ARR [K] =到达[I];
到达[I] = T;
}
}
的printf(“\ N排榜:\ N \ N“); BR /的printf(”\ \ t斯ID \吨数学\吨英语\ t总\ t发布\“);
(J = 0; J 数; J + +)/ *输出出学生的成绩和排名* /排榜
的printf(“\%-6S \ T%4S \ T%-6.1F \ T%6.1F \ T-6.1F% \ T%5D \ N“,
改编[J]。名字,编曲[J]。数量,编曲[J]。数学,编曲[J]。英语,改编[J]。数学+改编[ J]英语
j +1)的;
}
的printf(“\ n输入返回到主程序\ N”);
fflush的(STDIN); BR /的getchar的();
}
作废的发现(学生ARR)/ *定义查询功能* /
J;
字符名称]的学生姓名;用于接收用户输入* /
字符数[10]; / *接收用户输入* /
系统的学生证(“CLS”); / / * *清屏功能* / 的printf(“\ n请输入学生信息,您正在寻找:\”);
的printf(“\ n个学生的名字:”);
scanf函数(“%”,名称);
的printf(“\ n个学生学号:”);的
scanf函数(“%”号);
(J = 0; J 计数; J + +)/ *使用字符串比较函数来找到战争的艺术合格的学生成绩* /
{
((STRCMP(名称,编曲[J]。名字)== 0)(STRCMP(数量,到达[J]号)== 0))
{
printf的-4S(“\ N \吨\吨数\吨数学\吨\吨得分\ N”);
的printf(“\%-6S \ T%\ T%6.1F \ T %\ T%6.1F-6.1F \ N“,
改编[J]。名字,编曲[J]。数量,编曲[J]。数学,编曲[J]。英语,编曲[J]。数学+改编[J]。英语);
突破;
}
}
(J =计)/ *如果没有找到,从循环条件退出* /
printf的(“\ N没有发现学生记录,请检查并重新找到!\ N”);
fflush的(STDIN); / *清空输入缓冲区* /
printf的(“\ n输入返回先前的功能菜单\ N”);
用getchar();
}
首先要掌握项目的架构模式,把握一个整体。然后在根据端到端的数据流向进行深入阅读,比如从页面添加一个字段,它是经历怎样一个过程才到达数据库的。