Java动态规划求解背包问题题

求解一个关于JavaBean的题目,该如何解决 - Java Web开发当前位置:& &&&求解一个关于JavaBean的题目,该如何解决求解一个关于JavaBean的题目,该如何解决&&网友分享于:&&浏览:8次求解一个关于JavaBean的题目题干:编写一个UserJsp.jsp页面向用户显示姓名,页面使用useBean标准动作。要求同时使用setProperty动作将用户姓名设置为anne。getProperty动作用于获取anne的名字。我的答案是这样的:&%@ page language=”java” contenType=”text/charset=gb2312”&&html&&head&&/head&&body& & &jsp:userBean id=”user” class=”.model.UserBean” scope=”request”/& & &jsp:setProperty property=”name” name=”user” value=”anne”/& & 姓名:&jsp:getProperty property=”name” name=”user” /&&/body&&/html&请问各位,我的答案对吗?不对的话哪错了?谢谢啦------解决方案--------------------
我认为对呀。
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有23:20 提问
大神看看这道java题目,帮忙解决一下
Consider an expression like E:"123 * x + 456 * y * 12 - 200 / z" which follows the rules:
· may contain operands: +,-,*,/
· may contain variables (like 'x')
· may contain constants (like '123')
· does not contain parenthesis.
Write a set of Java classes to parse and "compile" expressions like E. Once the expression is "compiled"
it should be able to evaluated against a Map which would contain the value for the
variables. For example the expression "x + 2*y" would result to7 when evaluated against [x -&1, y -&3].
By "compiled" we mean that if the expression is to be evaluated against 1m inputs, the work of parsing
the expression into a set of Java classes should only be done once.
You should write a set of unit tests to show that your implementation is correct.
This is an Object Oriented Programing exercise. Focus should be put on good use of OOP principles
(encapsulation, good level of abstraction, low amount of duplicated code, design easy to extend, etc..)
and design patterns if necessary.
We recommend to use Maven, but you may use any other tool providing that you give sufficient
instruction to execute your code.
You may use generic libraries like Apache Common or Google Guava but you may not use scripting
libraries like JEXL, ANTLR or Grammatica.
按赞数排序
有一个思路是把表达式及其子表达式均看作Expression对象,即"123 * x + 456 * y * 12 - 200 / z"是一个Expression,"123 * x" 也是一个Expression, "123" 也是一个Expression。
题中说的"Compile"即可解释为按照计算顺序(先除乘,后减加)建立一个树形结构,将"123 * x + 456 * y * 12 - 200 / z"这个Expression作为根节点,第一层子节点是所有需要"+"的Expression(123 * x, 456 * y * 12 - 200 / z),第二层是" - "的,以此类推。最后调用根节点的evaluate方法递归的获得执行结果。
/*根据不同的运算符返回不同的结果,例如:对于加法运算符,则返回value1 + value2.*/
public interface IOperator {
public double evaluate(double value1, double value2);
public String getName();
public class Expression {
private List&Expression& subE
private IO
public static Map&String, Double& valueM
private static final String[] operatorNames = { "+", "-", "*", "/" };
public Expression(String expression) {
this.expression = expression.trim();
public double evaluate() throws Exception {
if(isNumber(expression)){
return Character.isDigit(expression.charAt(0))?Double.valueOf(expression):valueMap.get(expression);
List&Expression& subExpressions=getSubExpressions();
if(subExpressions.size()==0){
throw new Exception("Invalid expression: "+expression);
double result=subExpressions.get(0).evaluate();
for(int i=1;i&subExpressions.size();++i){
result=operator.evaluate(result, subExpressions.get(i).evaluate());
public String toString(){
public void compile() {
compile(this, 0);
private void compile(Expression expression, int operatorIndex) {
if(isNumber(expression.toString())){
if (operatorIndex & operatorNames.length) {
expression.setOperator(OperatorFactory.getOperatorByName(operatorNames[operatorIndex])); //OperatorFactory根据不同的运算符字符串返回不同的IOperator对象,此处省略实现.
expression.setSubExpressions(getSubExpressionByOperator(expression.toString(), expression.getOperator()));
for(Expression subExpression:expression.getSubExpressions()){
compile(subExpression, operatorIndex+1);
private List&Expression& getSubExpressionByOperator(String expression, IOperator operator){
String[] subExpressionStrs=expression.split(operator.getName());
List&Expression& subExpressions=new ArrayList&Expression&();
for(String subExpressionStr:subExpressionStrs){
subExpressions.add(new Expression(subExpressionStr));
return subE
private boolean isNumber(String str) {
Pattern pattern = pile("[0-9]+.?[0-9]*");
Matcher isNum = pattern.matcher(str);
return isNum.matches() || (valueMap!=null && valueMap.containsKey(expression.toString()));
/*省略get/set方法*/
强烈建议,先翻译完再过来,JAVA面试题求解? - 知乎10被浏览1455分享邀请回答2添加评论分享收藏感谢收起java编程题全集一(答案)
&程序设计总复习题
、编写一个程序在屏幕上输出“你好!”。(p13,例1-1)
&//name&Helloworld.java
&public&Helloworld
&&&&&System.out.print&("你好!"&);
2.&编写一个Java程序,用if-else语句判断某年份是否为闰年。
//&Programme&Name&LeapYear.java
if(args.length!=0)
&&year=Integer.parseInt(args[0]);
年是闰年。
年不是闰年。
、编写一个程序在屏幕上输出!!!……!的和。(p64,例2-2)
//&programme&name&ForTest.java
public&class&ForTest&{&
public&static&void&main(&String&args[]&)&{
&&int&&i,j,mul,sum=0;
for(i=1;i&=10;i++)&{
for(j=1,j&=i;j++)&{
mul=mul*j;
&&&&&&sum=sum+
System.out.println(!!!……!=&+sum);
4.&(1)编写一个圆类Circle,该类拥有:
①一个成员变量
adius(私有,浮点型);&&//&存放圆的半径;
&&&&&&&②两个构造方法
&&&&&&&&&&Circle(&)&&&&&&&&&&&&&&&&&//&将半径设为0
&&&&&&&&&&Circle(double&&r&)&&&&&&&&&//创建Circle对象时将半径初始化为r
&&&&&&&③&三个成员方法
&&&&&&&&&&&&double&getArea(&)&&&&&&&//获取圆的面积
&&&&&&&&&&&&double&getPerimeter(&)&&&//获取圆的周长
&&&&&&&&&&&&void&&show(&)&&&&&&&&&&//将圆的半径、周长、面积输出到屏幕
(2)编写一个圆柱体类Cylinder,它继承于上面的Circle类。还拥有:
①一个成员变量
double&hight(私有,浮点型);&&//&圆柱体的高;
&&&&&&&②构造方法
&&&&&&&&&&Cylinder&(double&r,&double&&h&)&&&&&&&&&&&//创建Circle对象时将半径初始化为r
&&&&&&&③&成员方法
&&&&&&&&&&&&double&getVolume(&)&&&&&&&&&&&&&//获取圆柱体的体积
&&&&&&&&&&&&void&&showVolume(&)&&&&&&&&&&&&&//将圆柱体的体积输出到屏幕
编写应用程序,创建类的对象,分别设置圆的半径、圆柱体的高,计算并分别显示圆半径、圆面积、圆周长,圆柱体的体积。
/Programme&Name
class&Circle&{&&&&&&&&&&&&&&&&&&&&&&//定义父类--园类
private&double&&&&&&&&&&&//成员变量--园半径
Circle()&{&&&&&&&&&&&&&&&&&&&&&&//构造方法
Circle(double&r)&{&&&&&&&&&&&&&&//构造方法&
double&getPerimeter()&{&&&&&&&&&//成员方法--求园周长
double&getArea()&{&&&&&&&&&&&&&&//成员方法--求园面积
void&disp()&{&&&&&&&&&&&&&&&&&&&//成员方法--显示园半径、周长、面积
System.out.println("园半径="+radius);
System.out.println("园周长="+getPerimeter());
System.out.println("园面积="+getArea());
class&Cylinder&extends&Circle&{&&&&&//定义子类--圆柱类
private&double&&&&&&&&&&&&//成员变量--园柱高
Cylinder(double&r,double&h)&{&&&//构造方法&
public&double&getVol()&{&&&&&&&&//成员方法--求园柱体积
public&void&dispVol()&{&&&&&&&&&//成员方法--显示园柱体积
System.out.println("圆柱体积="+getVol());
public&class&TestCylinder&{&&&&&&&&&//定义主类
public&static&void&main(String[]&args)&{&&&&//主程入口
&&&&Circle&Ci=new&Circle(10.0);&//&生成园类实例
&&&&Ci.disp();&//&调用园类的方法
&&&&&&&&Cylinder&Cyl=new&Cylinder(5.0,10.0);&&&&//生成圆柱类实例
&&&&&&&&Cyl.disp();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//调用父类方法
&&&&&&&&Cyl.dispVol();&&&&&&&&&&&&&&&&&&&&&&&&&&//调用子类方法
5、编写一个应用程序,从键盘读取用户输入两个字符串,并重载个函数分别实现这两个字符串的拼接、整数相加和浮点数相加。要进行异常处理,对输入的不符合要求的字符串提示给用户,不能使程序崩溃。(p39,例2-10,2-11)
//name&Strinput.java
public&rinput
&&&String&s1,s2,ss,si,
&&&&&&&int&i1,i2;
&&&&&&&float&f1,f2;
System.out.print&("输入第一个字符串:"&);
&&&&&&&&&&&System.out.print&("输入第二个字符串:"&);
i1&=&Integer.parseInt(s1);
&&&&&&&i2&=&Integer.parseInt(s2);
&&&&&&&f1&=&Float.parseFloat(s1);
&&&&&&&f2&=&Float.parseFloat(s2);
&&&&&&&ss&=&strAdd(s1,s2);
&&&&&&&si&=&strAdd(i1,i2);
&&&&&&&sf&=&strAdd(f1,f2);
&&&&&&&System.out.println&("输入的二个字符串相加结果为:"+ss&);
&&&&&&&System.out.println&("输入字符串转换为整数相加结果为:"+si&);
&&&&&&&System.out.println&("输入字符串转换为浮点数相加结果为:"+sf&);
&&&String&strAdd(String&str1,String&str2)&{
return&str1+str2;
String&strAdd(int&int1,int&int2)&{
return&&String.valueOf(int1+int2);
String&strAdd(float&flt1,float&flt2)&{
return&&String.valueOf&(flt1+flt2);
6.&应用FileInputStream类,编写应用程序,从磁盘上读取一个Java程序,并将源程序代码显示在屏幕上。(被读取的文件路径为:E:/myjava/Hello.java)
7、编写一个程序将当个数以数组的形式写入到文件中,并以相反的顺序读出显示在屏幕上。(p190,例7-2)
&&//programme&name&IODemo.java
&&import&java.io.*;
&&public&class&IODemo&{
&&public&static&void&main(&String&args[]&)&{
&&&&int&data[]&=&{};
{&DataOutputStream&out&=&new&&DataOutputStream&(new&&FileOutputStream(dest.txt));
&&for(int&i=0;i
&&&&out.WriteInt(data[i]);
&&out.close();
&DataInputStream&in&=&new&&DataInputStream&(new&&FileInputStream(dest.txt));
&for(int&i=&data.length-1;i&=&0;i--)&{
&&&&t=in.readInt(data[i]);
&&&&System.out.print(&&+t);
&&System.out.println(&);
&&in.close();
}catch(IOException&e)
8.&利用Applet类和Runnable接口实现滚动字幕,其中字幕文字(“学好Java有工作”)和时间间隔(“200”)需要由页面文件中标记的子标记传递。
学好java有工作"&
9、编写一个程序实现多线程,在线程中输出线程的名字,隔毫秒输出一次,共输出次。(p202,例8-1)
&//&programme&name&TestT
&//&声明一个子线程类T
&class&ThreadDemo&extends&Thread&{
&&public&ThreadDemo(String&str)&{
super(str);
&&public&void&run()&{
&&&&for(int&i=0;i&20;i++){
System.out.print(&&+this.getName());
&leep(300);
}catch(InterruptedException&e){
System.out.println(&&/end);
public&class&TestThread&{
&public&static&void&main(&String&args[]&)&{
&&&ThreadDemo&thread1=new&ThreadDemo(T1);
&&&ThreadDemo&thread2=new&ThreadDemo(T2);
&&&ThreadDemo&thread3=new&ThreadDemo(T3);
&&&thread1.start();
&&&thread2.start();
&&&thread3.start();
10.&编写程序,在屏幕上显示带标题的窗口,并添加一个按钮。当用户单击按钮时,结束程序。
//&Programme&Name&ButtonEventDemo.java
protected&JButton&b1;
//声明一个按钮对象
public&ButtonEventDemo()&{
//构造方法
&&//创建按钮的图标对象
&&b1&=&new&JButton("退出按钮",&ButtonIcon);
&&//生成按钮对象
b1.setMnemonic(KeyEvent.VK_E);&&&//设置b1的助记符是Alt+E
&&&&&&&&b1.setToolTipText("这是退出按钮。");
//&设置按钮提示条
&&&&&&&&this.add(b1);&&&//往面板对象中加载按钮
&&//本类对象注册为按钮的事件监听器
//按钮事件响应方法
System.exit(0)&&&//按b1则退出主程序&&&&&&&&
&&&&private&static&void&createGUI()&{&//创建窗体
&//设置java隐含观感
&&&&&&&&JFrame&frame&=&new&JFrame("按钮测试");&//生成应用程序主窗体
&//设置关闭时隐含操作
&&&&&&&&&//生成主类对象--面板
&&&&&&&&CPane.setOpaque(true);&&&&//面板要求不透明
&//设置主类对象为主窗体的内容面板
&//主窗体紧缩显示
&&//设置主窗体可见
&&&&public&static&void&main(String[]&args)&{&&//将createGUI()列入线程
11.&利用线程方法编写JApplet程序,实现在浏览器端实时动态显示本地系统时钟
//&Programme&Name&Watch.java
&&//System.out.println("现在系统时间是(long):"+&ldf.format(d));&
Watch.class&width=300&height=200&
&//&保存为Watch.html&文件
(2)类带参数的构造方法:&
在构造方法中通过形参完成对成员变量的赋值操作。
(4)根据五每,五,以及计算并输出。
//Pragramme&name&S
public&class&Student&{
String&sNO,sName,sSex;
int&sAge,sJava;
public&Student(String&XH,String&XM,String&XB,int&NL,int&XF)&{
&&&super();
&&&sNO=XH;
&&&sName=XM;
&&&sSex=XB;
&&&sAge=NL;
&&&sJava=XF;
public&String&getNO()&{
return&sNO;
public&String&getName()&{
return&sName;
public&String&getSex()&{
return&sSex;
public&int&getAge()&{
return&sAge;
public&int&getJava()&{
return&sJava;
public&static&void&main(String[]&args)&{
Student[]&st=new&Student[5];
st[0]=new&Student("09zc01","张三","男",19,94);
st[1]=new&Student("09zc02","李四","男",20,85);
st[2]=new&Student("09zc03","王五","女",18,96);
st[3]=new&Student("09zc04","赵六","男",17,90);
st[4]=new&Student("09zc05","杨七","女",21,88);
&&&&int&max=0,min=100,sum=0;
&&&&System.out.println("&&&&学生信息:");
&&&&for&(int&i=0;ilength;i++)&{
if&(st[i].sJava&&&min)
min=st[i].sJava;
if&(st[i].sJava&&&max)
max=st[i].sJava;
sum=sum+st[i].sJava;
System.out.println("学生编号:"+st[i].getNO()+",&&姓名:"+st[i].getName()+",&&性别:"+st[i].getSex()+",&&年龄:"+st[i].getAge()+",&&Java课学分:"+st[i].getJava());
&&&&System.out.println();
&&&&System.out.println("&&&&共有学生:"+st.length+",&&平均成绩:"+sum/st.length);
&&&&System.out.println("&&&&最小学分:"+min+",&&最大学分:"+max);
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。求解个java题目
实现三个线程同步完成对银行客户排队队列(先进先出队列)的操作:1.客户:设计一个类表示客户,包括客户姓名、电话和重要级别2.队列:设计一个类表示队列,队列的每一项是一个客户对象3. 线程A(接待员): 一个新客户到来,加入到队列的末尾。在1-                                     4秒钟之间随机加入新客户5.线程B(管理员):根据客户的重要级别对队列进行排队。每加入一
个新客户都触发线程B重新排队5.线程C(服务员):按照排队顺序从队列头中取得一个客户;每隔3                
秒钟自动取得一个客户,直到队列中没有客户。要求:能够完成30个客户的正确排队和服务过程
09-11-24 &
public class Annulus{private double inner_private double outer_public Annulus(double ir, double or) {super();this.inner_radius=this.outer_radius =}public double getArea(){return 3.14*(outer_radius*outer_radius-inner_radius*inner_radius);}public String toString() {return &inner_radius=&+inner_radius+&,outer_radius=&+outer_radius+&,area=&+getArea();}}public class Test{  public static void main(String[] args){     Annulus test=new Annulus(1.0,2.0);     System.out.println(test.toString());  }}
请登录后再发表评论!}

我要回帖

更多关于 回溯法求解01背包问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信