下载

2下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 代码与编程题

代码与编程题.doc

代码与编程题

李浩
2018-09-08 0人阅读 举报 0 0 暂无简介

简介:本文档为《代码与编程题doc》,可适用于IT/计算机领域

代码与编程题、写一个Singleton出来Singleton模式主要作用是保证在Java应用程序中一个类Class只有一个实例存在。一般Singleton模式通常有几种种形式:第一种形式: 定义一个类它的构造函数为private的它有一个static的private的该类变量在类初始化时实例话通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。public class Singleton {private Singleton(){}      在自己内部定义自己一个实例是不是很奇怪?      注意这是private 只供内部调用      private static Singleton instance = new Singleton()      这里提供了一个供外部访问本class的静态方法可以直接访问        public static Singleton getInstance() {        return instance         }     }     第二种形式: public class Singleton {   private static Singleton instance =   public static synchronized Singleton getInstance() {  这个方法比上面有所改进不用每次都进行生成对象只是第一次       使用时生成实例提高了效率!  if (instance==)    instance=new Singleton()return instance   } } 其他形式:定义一个类它的构造函数为private的所有方法为static的。一般认为第一种形式要更加安全些 、继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么答:父类:packagetestpublicclass FatherClass{   publicFatherClass() {  Systemoutprintln("FatherClassCreate") }}子类:packagetestimporttestFatherClasspublicclass ChildClassextendsFatherClass{ publicChildClass() {  Systemoutprintln("ChildClassCreate") } publicstaticvoidmain(Stringargs) {  FatherClassfc=newFatherClass()  ChildClasscc=newChildClass() }}输出结果:C:>javatestChildClassFatherClassCreateFatherClassCreateChildClassCreate、内部类的实现方式答:示例代码如下:packagetestpublicclass OuterClass{ privateclassInterClass {  publicInterClass()  {   Systemoutprintln("InterClassCreate")  } } publicOuterClass() {  InterClassic=newInterClass()  Systemoutprintln("OuterClassCreate") } publicstaticvoidmain(Stringargs) {  OuterClassoc=newOuterClass() }}输出结果:C:>javatestOuterClassInterClassCreateOuterClassCreate再一个例题:publicclassOuterClass{ privatedoubled=   insertcodehere}YouneedtoinsertaninnerclassdeclarationatlineWhichtwoinnerclassdeclarationsarevalid(Choosetwo)AclassInnerOne{    publicstaticdoublemethoda(){returnd}  }BpublicclassInnerOne{    staticdoublemethoda(){returnd}  }CprivateclassInnerOne{    doublemethoda(){returnd}  }DstaticclassInnerOne{    protecteddoublemethoda(){returnd}  }EabstractclassInnerOne{    publicabstractdoublemethoda()  }说明如下:一静态内部类可以有静态成员而非静态内部类则不能有静态成员。故A、B错二静态内部类的非静态成员可以访问外部类的静态变量而不可访问外部类的非静态变量returnd出错。故D错三非静态内部类的非静态成员可以访问外部类的非静态变量。故C正确四答案为C、E、Java的通信编程编程题(或问答)用JAVASOCKET编程读服务器几个字符再写入本地显示?答:Server端程序:packagetestimportjavanet*importjavaio*publicclassServer{ privateServerSocketss privateSocketsocket privateBufferedReaderin privatePrintWriterout publicServer() {  try  {   ss=newServerSocket()   while(true)   {    socket=ssaccept()    StringRemoteIP=socketgetInetAddress()getHostAddress()    StringRemotePort=":"socketgetLocalPort()    Systemoutprintln("Aclientcomein!IP:"RemoteIPRemotePort)    in=newBufferedReader(newInputStreamReader(socketgetInputStream()))    Stringline=inreadLine()    Systemoutprintln("Cleintsendis:"line)    out=newPrintWriter(socketgetOutputStream(),true)    outprintln("YourMessageReceived!")    outclose()    inclose()    socketclose()   }  }catch(IOExceptione)  {   outprintln("wrong")  } } publicstaticvoidmain(Stringargs) {  newServer() }}Client端程序:packagetestimportjavaio*importjavanet*publicclassClient{ Socketsocket BufferedReaderin PrintWriterout publicClient() {  try  {   Systemoutprintln("TrytoConnectto:")   socket=newSocket("",)   Systemoutprintln("TheServerConnected!")   Systemoutprintln("PleaseentersomeCharacter:")   BufferedReaderline=newBufferedReader(newInputStreamReader(Systemin))   out=newPrintWriter(socketgetOutputStream(),true)   outprintln(linereadLine())   in=newBufferedReader(newInputStreamReader(socketgetInputStream()))   Systemoutprintln(inreadLine())   outclose()   inclose()   socketclose()  }catch(IOExceptione)  {   outprintln("Wrong")  } } publicstaticvoidmain(Stringargs) {  newClient() }}、用JAVA实现一种排序JAVA类实现序列化的方法(二种)?如在COLLECTION框架中实现比较要实现什么样的接口?答:用插入法进行排序代码如下packagetestimportjavautil*class InsertSort{ ArrayListal publicInsertSort(intnum,intmod) {  al=newArrayList(num)  Randomrand=newRandom()  Systemoutprintln("TheArrayListSortBefore:")  for(inti=i<numi)  {   aladd(newInteger(Mathabs(randnextInt())mod))   Systemoutprintln("al"i"="alget(i))  } } publicvoidSortIt() {  IntegertempInt  intMaxSize=  for(inti=i<alsize()i)  {      tempInt=(Integer)alremove(i)    if(tempIntintValue()>=((Integer)alget(MaxSize))intValue())    {     aladd(MaxSize,tempInt)     MaxSize     Systemoutprintln(altoString())    }else{     for(intj=j<MaxSizej)     {      if(((Integer)alget(j))intValue()>=tempIntintValue())      {       aladd(j,tempInt)       MaxSize       Systemoutprintln(altoString())       break      }     }    }  }  Systemoutprintln("TheArrayListSortAfter:")  for(inti=i<alsize()i)  {   Systemoutprintln("al"i"="alget(i))  } } publicstaticvoidmain(Stringargs) {  InsertSortis=newInsertSort(,)  isSortIt() }}、编程:编写一个截取字符串的函数输入为一个字符串和字节数输出为按字节截取的字符串。但是要保证汉字不被截半个如“我ABC”应该截为“我AB”输入“我ABC汉DEF”应该输出为“我ABC”而不是“我ABC汉的半个”。答:代码如下:packagetestclass SplitString{ StringSplitStr intSplitByte publicSplitString(Stringstr,intbytes) {  SplitStr=str  SplitByte=bytes  Systemoutprintln("TheStringis:'"SplitStr"'SplitBytes="SplitByte) } publicvoidSplitIt() {  intloopCount  loopCount=(SplitStrlength()SplitByte==)(SplitStrlength()SplitByte):(SplitStrlength()SplitByte)  Systemoutprintln("WillSplitinto"loopCount)  for(inti=i<=loopCounti)  {   if(i==loopCount){    Systemoutprintln(SplitStrsubstring((i)*SplitByte,SplitStrlength()))   }else{    Systemoutprintln(SplitStrsubstring((i)*SplitByte,(i*SplitByte)))   }  } } publicstaticvoidmain(Stringargs) {  SplitStringss=newSplitString("test中dd文dsaf中男大n中国中国人ewldfls=",)  ssSplitIt() }}、JAVA多线程编程。用JAVA写一个多线程程序如写四个线程二个加二个对一个变量减一输出。希望大家补上谢谢、可能会让你写一段Jdbc连Oracle的程序,并实现数据查询答:程序如下:packagehelloantimportjavasql*publicclass jdbc{ StringdbUrl="jdbc:oracle:thin:::orcl" StringtheUser="admin" StringthePw="manager" Connectionc= Statementconn ResultSetrs= publicjdbc() {  try{   ClassforName("oraclejdbcdriverOracleDriver")newInstance()         c=DriverManagergetConnection(dbUrl,theUser,thePw)   conn=ccreateStatement()  }catch(Exceptione){   eprintStackTrace()  } } publicbooleanexecuteUpdate(Stringsql) {   try   {     connexecuteUpdate(sql)     returntrue   }   catch(SQLExceptione)   {     eprintStackTrace()     returnfalse   } } publicResultSetexecuteQuery(Stringsql) {   rs=   try   {     rs=connexecuteQuery(sql)   }   catch(SQLExceptione)   {     eprintStackTrace()   }   returnrs } publicvoidclose() {   try   {     connclose()     cclose()   }   catch(Exceptione)   {     eprintStackTrace()   } } publicstaticvoidmain(Stringargs) {  ResultSetrs  jdbcconn=newjdbc()  rs=connexecuteQuery("select*fromtest")  try{  while(rsnext())  {   Systemoutprintln(rsgetString("id"))   Systemoutprintln(rsgetString("name"))  }  }catch(Exceptione)  {   eprintStackTrace()  } }}、ORACLE大数据量下的分页解决方法。一般用截取ID方法还有是三层嵌套方法。答:一种分页方法< inti= intnumPages= Stringpages=requestgetParameter("page") intcurrentPage= currentPage=(pages==)():{IntegerparseInt(pages)} sql="selectcount(*)fromtables" ResultSetrs=DBLinkexecuteQuery(sql) while(rsnext())i=rsgetInt() intintPageCount= intPageCount=(inumPages==)(inumPages):(inumPages) intnextPage intupPage nextPage=currentPage if(nextPage>=intPageCount)nextPage=intPageCount upPage=currentPage if(upPage<=)upPage= rsclose() sql="select*fromtables" rs=DBLinkexecuteQuery(sql) i= while((i<numPages*(currentPage))rsnext()){i}>输出内容输出翻页连接合计:<=currentPage><=intPageCount><ahref="Listjsppage=">第一页<a><ahref="Listjsppage=<=upPage>">上一页<a>< for(intj=j<=intPageCountj){ if(currentPage!=j){> <ahref="listjsppage=<=j>"><=j><a>< }else{ outprintln(j) } }><ahref="Listjsppage=<=nextPage>">下一页<a><ahref="Listjsppage=<=intPageCount>">最后页<a>、用jdom解析xml文件时如何解决中文问题如何解析答:看如下代码,用编码方式加以解决packagetestimportjavaio*publicclassDOMTest{ privateStringinFile="c:peoplexml" privateStringoile="c:peoplexml"  publicstaticvoidmain(Stringargs) {    newDOMTest()   } publicDOMTest() {  try    {      javaxxmlparsersDocumentBuilderbuilder=      javaxxmlparsersDocumentBuilderFactorynewInstance()newDocumentBuilder()     orgwcdomDocumentdoc=buildernewDocument()     orgwcdomElementroot=doccreateElement("老师")     orgwcdomElementwang=doccreateElement("王")   orgwcdomElementliu=doccreateElement("刘")     wangappendChild(doccreateTextNode("我是王老师"))     rootappendChild(wang)     docappendChild(root)     javaxxmltransformTransformertransformer=      javaxxmltransformTransformerFactorynewInstance()newTransformer()     transformersetOutputProperty(javaxxmltransformOutputKeysENCODING,"gb")     transformersetOutputProperty(javaxxmltransformOutputKeysINDENT,"yes")         transformertransform(newjavaxxmltransformdomDOMSource(doc),           newjavaxxmltransformstreamStreamResult(oile))    }    catch(Exceptione)    {     Systemoutprintln(egetMessage())    }   }}、编程用JAVA解析XML的方式答:用SAX方式解析XMLXML文件如下:<xmlversion=""encoding="gb"><person> <name>王小明<name> <college>信息学院<college>   <telephone><telephone> <notes>男,年生,博士年调入海南大学<notes> <person> 事件回调类SAXHandlerjava importjavaio*importjavautilHashtableimportorgxmlsax*publicclassSAXHandlerextendsHandlerBase { privateHashtabletable=newHashtable() privateStringcurrentElement= privateStringcurrentValue= publicvoidsetTable(Hashtabletable)   {   thistable=table   } publicHashtablegetTable()   {   returntable   } publicvoidstartElement(Stringtag,AttributeListattrs) throwsSAXException   {   currentElement=tag   } publicvoidcharacters(charch,intstart,intlength) throwsSAXException   {   currentValue=newString(ch,start,length)   } publicvoidendElement(Stringname)throwsSAXException   {   if(currentElementequals(name))     tableput(currentElement,currentValue)   } }JSP内容显示源码,SaxXmljsp:<HTML><HEAD><TITLE>剖析XML文件peoplexml<TITLE><HEAD><BODY><pageerrorPage="ErrPagejsp"contentType="texthtmlcharset=GB"><pageimport="javaio*"><pageimport="javautilHashtable"><pageimport="orgwcdom*"><pageimport="orgxmlsax*"><pageimport="javaxxmlparsersSAXParserFactory"><pageimport="javaxxmlparsersSAXParser"><pageimport="SAXHandler"><Filefile=newFile("c:peoplexml")FileReaderreader=newFileReader(file)ParserparserSAXParserFactoryspf=SAXParserFactorynewInstance()SAXParsersp=spfnewSAXParser()SAXHandlerhandler=newSAXHandler()spparse(newInputSource(reader),handler)HashtablehashTable=handlergetTable()outprintln("<TABLEBORDER=><CAPTION>教师信息表<CAPTION>")outprintln("<TR><TD>姓名<TD>""<TD>" (String)hashTableget(newString("name"))"<TD><TR>")outprintln("<TR><TD>学院<TD>""<TD>" (String)hashTableget(newString("college"))"<TD><TR>")outprintln("<TR><TD>电话<TD>""<TD>" (String)hashTableget(newString("telephone"))"<TD><TR>")outprintln("<TR><TD>备注<TD>""<TD>" (String)hashTableget(newString("notes"))"<TD><TR>")outprintln("<TABLE>")><BODY><HTML>、EJB的基本架构答:一个EJB包括三个部分: RemoteInterface接口的代码 packageBeans importjavaxejbEJBObject importjavarmiRemoteException publicinterfaceAddextendsEJBObject {  somemethoddeclare } HomeInterface接口的代码 packageBeans importjavarmiRemoteException importjaaxejbCreateException importjavaxejbEJBHome publicinterfaceAddHomeextendsEJBHome {   somemethoddeclare } EJB类的代码 packageBeans importjavarmiRemoteException importjavaxejbSessionBean importjavxejbSessionContext publicclassAddBeanImplementsSessionBean {   somemethoddeclare } 、如何校验数字型varre=^d{,}$|d{,}$varstr=documentformall(i)valuevarr=strmatch(re)if(r==){  sign=  break}else{  documentformall(i)value=parseFloat(str)}、将一个键盘输入的数字转化成中文输出(例如:输入:     输出:一百二拾三万四千五百六拾七)用java语言实现,,请编一段程序实现!public class Reader {  private String strNum  private String strNumChFormat  private String strNumTemp  private int intNumLen  private String strBegin  public Reader(String strNum) {    thisstrNum = strNum  }  public boolean check(String strNum) {    boolean valid = false        if (strNumsubstring(,)equals("")){     thisstrNum = strNumsubstring()    }    try {      new Double(strNum)      valid = true    }    catch (NumberFormatException ex) {      Systemoutprintln("Bad number format!")    }    return valid  }  public void init() {    strNumChFormat = ""    intNumLen = strNumlength()    strNumTemp = strNum    strNumTemp = strNumTempreplace('', '一')    strNumTemp = strNumTempreplace('', '二')    strNumTemp = strNumTempreplace('', '三')    strNumTemp = strNumTempreplace('', '四')    strNumTemp = strNumTempreplace('', '五')    strNumTemp = strNumTempreplace('', '六')    strNumTemp = strNumTempreplace('', '七')    strNumTemp = strNumTempreplace('', '八')    strNumTemp = strNumTempreplace('', '九')    strNumTemp = strNumTempreplace('', '零')    strNumTemp = strNumTempreplace('', '点')    strBegin = strNumTempsubstring(, )  }  public String readNum() {    if (check(strNum)) {      init()      try {        for (int i = , j = , k =  i < intNumLen i) {          if (strNumTempcharAt(intNumLen  ) == '零'  i == ) {            strNumChFormat = "位"          }          else if (strNumTempcharAt(intNumLen  i) == '零'  j == ) {            strNumChFormat = "位"  strNumChFormat          }          else if (strNumTempcharAt(intNumLen  i) == '点') {            j =             k =             strNumChFormat = strNumTempcharAt(intNumLen  i)  strNumChFormat            continue          }          else {            strNumChFormat = strNumTempcharAt(intNumLen  i)  strNumChFormat          }          if (strNumTempcharAt(intNumLen  i  ) != '位'               strNumTempcharAt(intNumLen  i  ) != '零') {            if (j ==   i < intNumLen) {              strNumChFormat = '拾'  strNumChFormat            }            else if (j ==   i < intNumLen) {              strNumChFormat = '百'  strNumChFormat            }            else if (j ==   i < intNumLen) {              strNumChFormat = '千'  strNumChFormat            }          }          if (j ==   i < intNumLen) {            j =           }          if (k ==   i < intNumLen) {            strNumChFormat = '万'  strNumChFormat          }          else if (k ==   i < intNumLen) {            k =             strNumChFormat = '亿'  strNumChFormat          }          j          k        }        while (strNumChFormatindexOf("位") != ) {          strNumChFormat = strNumChFormatreplaceAll("位", " ")        }        if (strNumChFormatsubstring(, ) == "一拾") {          strNumChFormat = strNumChFormatsubstring(, strNumChFormatlength())        }        if (strNumChFormatindexOf("点") >= ) {          String rebegin = strNumChFormatsubstring(,              strNumChFormatindexOf("点"))          String relast = strNumChFormatsubstring(strNumChFormatindexOf("点"),              strNumChFormatlength())          for (int i =  i <= relastlength() i) {            relast = relastreplaceAll("拾", "")            relast = relastreplaceAll("百", "")            relast = relastreplaceAll("千", "")            relast = relastreplaceAll("万", "")            relast = relastreplaceAll("亿", "")          }          strNumChFormat = rebegin  relast        }      }      catch (ArrayIndexOutOfBoundsException ex) {        exprintStackTrace()      }      catch (Exception ex) {        exprintStackTrace()      }      int off = strNumChFormatindexOf("点")      strNumChFormat = strBegin  strNumChFormatsubstring()    }    else {      strNumChFormat = ""    }    return strNumChFormat  }  public static void main(String args) {    try {      String number = argstoString()      Systemoutprintln("The number is: "  number)      Reader reader = new Reader(number)      Systemoutprintln("Output String: "  readerreadNum())    }    catch (Exception ex) {      Systemoutprintln("Please input like that: javac Reader <number>")    }  }}、JAVA代码查错abstract class Name {   private String name   public abstract boolean isStupidName(String name) {}}大侠们这有何错误答案: 错。abstract method必须以分号结尾且不带花括号。public class Something {   void doSomething () {       private String s = ""       int l = slength()   }}有错吗答案: 错。局部变量前不能放置任何访问修饰符 (privatepublic和protected)。final可以用来修饰局部变量(final如同abstract和strictfp都是非访问修饰符strictfp只能修饰class和method而非variable)。abstract class Something {   private abstract String doSomething ()}这好像没什么错吧答案: 错。abstract的methods不能以private修饰。abstract的methods就是让子类implement(实现)具体细节的怎么可以用private把abstractmethod封锁起来呢 (同理abstract method前不能加final)。public class Something {   public int addOne(final int x) {       return x   }}这个比较明显。答案: 错。int x被修饰成final意味着x不能在addOne method中被修改。public class Something {   public static void main(String args) {       Other o = new Other()       new Something()addOne(o)   }   public void addOne(final Other o) {       oi   }}class Other {   public int i}和上面的很相似都是关于final的问题这有错吗答案: 正确。在addOne method中参数o被修饰成final。如果在addOne method里我们修改了o的reference(比如: o = new Other())那么如同上例这题也是错的。但这里修改的是o的member vairable(成员变量)而o的reference并没有改变。class Something {    int i    public void doSomething() {        Systemoutprintln("i = "  i)    }} 有什么错呢 看不出来啊。答案: 正确。输出的是"i = "。int i属於instant variable (实例变量或叫成员变量)。instant variable有default value。int的default value是。class Something {    final int i    public void doSomething() {        Systemoutprintln("i = "  i)    }}和上面一题只有一个地方不同就是多了一个final。这难道就错了吗答案: 错。final int i是个final的instant variable (实例变量或叫成员变量)。final的instant variable没有default value必须在constructor (构造器)结束之前被赋予一个明确的值。可以修改为"final int i = "。public class Something {     public static void main(String args) {        Something s = new Something()        Systemoutprintln("sdoSomething() returns "  doSomething())    }    public String doSomething() {        return "Do something "    }} 看上去很完美。答案: 错。看上去在main里call doSomething没有什么问题毕竟两个methods都在同一个class里。但仔细看main是static的。static method不能直接call nonstatic methods。可改成"Systemoutprintln("sdoSomething() returns "  sdoSomething())"。同理static method不能访问nonstatic instant variable。此处Something类的文件名叫OtherThingjavaclass Something {    private static void main(String somethingtodo) {                Systemoutprintln("Do something ")    }} 这个好像很明显。答案: 正确。从来没有人说过Java的Class名字必须和其文件名相同。但public class的名字必须和文件名相同。.interface  A{   int x = }class B{   int x =}class C extends B implements A {   public void pX(){      Systemoutprintln(x)   }   public static void main(String args) {      new C()pX()   }}答案:错误。在编译时会发生错误(错误描述不同的JVM有不同的信息意思就是未明确的x调用两个x都匹配(就象在同时import javautil和javasql两个包时直接声明Date一样)。对于父类的变量,可以用superx来明确而接口的属性默认隐含为 public static final所以可以通过Ax来明确。interface Playable {    void play()}interface Bounceable {    void play()}interface Rollable extends Playable, Bounceable {    Ball ball = new Ball("PingPang")}class Ball implements Rollable {    private String name    public String getName() {        return name    }    public Ball(String name) {        thisname = name            }   public void play() {        ball = new Ball("Football")        Systemoutprintln(ballgetName())    }}这个错误不容易发现。答案: 错。"interface Rollable extends Playable, Bounceable"没有问题。interface可继承多个interfaces所以这里没错。问题出在interface Rollable里的"Ball ball = new Ball("PingPang")"。任何在interface里声明的interface variable (接口变量也可称成员变量)默认为public static final。也就是说"Ball ball = new Ball("PingPang")"实际上是"public static final Ball ball = new Ball("PingPang")"。在Ball类的Play()方法中"ball = new Ball("Football")"改变了ball的reference而这里的ball来自Rollable interfaceRollable interface里的ball是public static final的final的object是不能被改变reference的。因此编译器将在"ball = new Ball("Football")"这里显示有错。、设计个线程其中两个线程每次对j增加另外两个线程对j每次减少。写出程序。以下程序使用内部类实现线程对j增减的时候没有考虑顺序问题。public class ThreadTest{  private int j  public static void main(String args){ThreadTest tt=new ThreadTest()Inc inc=ttnew Inc()Dec dec=ttnew Dec()for(int i=i<i){Thread t=new Thread(inc)tstart()t=new Thread(dec)tstart()}}  private synchronized void inc(){jSystemoutprintln(ThreadcurrentThread()getName()"inc:"j)  }  private synchronized void dec(){jSystemoutprintln(ThreadcurrentThread()getName()"dec:"j)  }  class Inc implements Runnable{public void run(){for(int i=i<i){inc()}}  }  class Dec implements Runnable{public void run(){for(int i=i<i){dec()} }  }}

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/21

代码与编程题

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利