uno牌java代碼 uno牌新玩法

編寫一個java程序,求代碼

這題貌似無聊,不過細想也涉及很多JAVA的編程基礎(chǔ)知識。

目前成都創(chuàng)新互聯(lián)已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、酉陽土家族苗族網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

這位triompha的這段程序好像也沒有完全按照提問者的要求作答。

他這段程序的運行結(jié)果是:

所以我這里也寫了一個,先看運行結(jié)果:

上代碼:

import?java.util.regex.Matcher;

import?java.util.regex.Pattern;

public?class?Student{

public?char[]?name?=?new?char[]{'無','聊','題'};

public?int?sid=?12123123;

public?static?void?main(String[]?args){

? Student?stu?=?new?Student();

? String?strName?=?new?String(stu.name);

? System.out.println("1?name:"?+?strName?+?"?sid:"?+?stu.sid);

? System.out.println("2?Int2Hex:"?+?spaceStr(strName)?+?Integer.toHexString(stu.sid));

? String?uni?=?stringToUnicode(strName);

? System.out.println("3?unicode:"?+?uni?);

? String?cha?=?unicodeToString(uni);

? System.out.println("4?change:"?+?cha?+?"?unicode:"?+?stringToUnicode(cha)?);

? String?sch?=?String.valueOf(stu.sid);

? System.out.println("5?segment:"?+?cutSegment(cutSegment(sch,2,"-"),6,"-"));

}

//用于計算字符數(shù)并對其

public?static?String?spaceStr(String?s){

String?str?=?"";

for?(int?i?=?0;?i??s.length()*2+2;?i++)?{

str?+=?"?";

}

return?str;

}

//轉(zhuǎn)換Unicode

public?static?String?stringToUnicode(String?s)?{

? String?str?=?"";

for?(int?i?=?0;?i??s.length();?i++)?{

? ? int?ch?=?(int)?s.charAt(i);

? ? if?(ch??255)

? ? ? ? str?+=?"\\u"?+?Integer.toHexString(ch);

? ? else

? ? ? ? str?+=?"\\"?+?Integer.toHexString(ch);

}

return?str;

}

//轉(zhuǎn)換字符,末位求反

public?static?String?unicodeToString(String?s)?{

? Pattern?pattern?=?Pattern.compile("(\\\\u(\\p{XDigit}{4}))");?//正則表達式

? Matcher?matcher?=?pattern.matcher(s);

? char?ch;

? while?(matcher.find())?{

? ? ? ch?=?(char)?(Integer.parseInt(matcher.group(2),?16)?^?1);//這里做了最后一位求反的特殊處理^1

? ? ? s?=?s.replace(matcher.group(1),?ch?+?"");?

? }

? return?s;

}

//插入分隔符

public?static?String?cutSegment(String?s,?int?i,?String?strInsert){

StringBuffer?buff?=?new?StringBuffer(s);

buff.insert(i,strInsert);

return?buff.toString();

}

}

代碼差不多要60行,這還真不是一個簡單的問題啊。

java構(gòu)造方法輸出值分析

main方法中我給你加上注釋了,其實只要注意兩點,1,初始化子類必先初始化父類 2.靜態(tài)變量y始終只有一份就可以了

==================================

public class Gamma {

public static void main(String[] args){

Uno a = new Uno();//構(gòu)造方法,為父類構(gòu)造方法,初始化中y的值+1 y=6

a.inc();//調(diào)用父類的inc方法,x的值+1 x為int,初始值為0 +1后 x=1

System.out.println(a.getTotale());//打印x+y= 1+6 = 7

a = new Due();//調(diào)用子類構(gòu)造方法,初始化子類必先初始化父類,那么 x=0;y=5, 但要注意,y為static,所以共享一份,此時y經(jīng)過上面的++后已經(jīng)為6;父類構(gòu)造方法y++后,y=7

a.inc();//調(diào)用子類的inc方法,首先super.inc調(diào)用父類,x++ 后 x=1 w++后 w=8

System.out.println(a.getTotale()); //調(diào)用子類getTOTAL方法,方法中調(diào)用父類的方法 x+y=1+7=8 w+8=8+8=16

Due b = new Due();//調(diào)用子類的構(gòu)造方法,必先初始化父類 y++ 因為static y此時為7 ++后 y=8

b.inc();//b.inc首先調(diào)用了父類 x++ x=1 w++后w=8

System.out.println(b.getTotale());//x+y+w=1+8+8 = 17

System.out.println(a.getTotale());//注意此時a也是子類的對象 因為 a=new Due() x+y+w=1+8+8 =17

}

}

pageoffice java 怎么用

OpenOffice java api:

簡單的說就是利用java程序可以操作OpenOffice的所有功能,比如創(chuàng)建doc文檔,插入文字,設(shè)置文字格式等等。

1. OpenOffice 給程序員提供了一個叫UNO (UniversalNetwork Objects)的組件技術(shù).我理解的UNO: OpenOffice 類似于web程序中的服務(wù)器,程序員寫的代碼類似于客戶端,利用UNO提供的接口和服務(wù)去完成對OpenOffice文檔的操作。所以寫程序首先要搭建 UNO環(huán)境:

1. 下載 OpenOffice

2.復(fù)制UNO提供的jar包: unoil.jar, java_uno.jar, juh.jar, jurt.jar, ridl.jar, unoloader.jar. (ps: 安裝了SDK之后在文件夾找)到自己的工程中,引入它們。

3. 下載文檔:DevelopersGuide.pdf.

4. 安裝了SDK后,重新啟動一下機器,然后就可以按照 DevelopersGuide 來學習 UNO 編程了。

5. 需要ava 環(huán)境。

補充: 安裝了SDK后, java, c++幫助文檔,樣例程序,其他關(guān)于sdk的信息 都放在本地openOffice安裝路徑一個叫sdk目錄下面,enjoy it !

總結(jié)一下已經(jīng)實現(xiàn)的功能和碰到的問題匯總:

1. 首先要得到遠程office組件的上下文.通過:

com.sun.star.uno.XComponentContext xContext = com.sun.star.comp.helper.Bootstrap.bootstrap();

得到,如果OpenOffice安裝路徑不是在工程的路徑下面(我自己猜的), 就會報:

com.sun.star.comp.helper.BootstrapException: no office executable found!

解決辦法: 黑其源代碼, 看了源代碼就會發(fā)現(xiàn)其實OpenOffice是在尋找本地的soffice的shell文件,所以弄個變量來保存soffice在系統(tǒng)中的路徑,重新寫一 個Bootstrap就可以了。詳細請參照:論壇 。

2. 得到 XMultiComponentFactory (ComponentFactory 工廠)

com.sun.star.lang.XMultiComponentFactory xMCF = xContext.getServiceManager();

3. 得到各種組件可以通過下面代碼:

// docType 是 與 soffice 同目錄下面的OpenOffice的其他shell文件,swrite等等

protected XComponent newDocComponent(String docType)

throws java.lang.Exception {

String loadUrl = "private:factory/" + docType;

mxRemoteServiceManager = this.getRemoteServiceManager();

Object desktop = mxRemoteServiceManager.createInstanceWithContext(

"com.sun.star.frame.Desktop", mxRemoteContext);

XComponentLoader xComponentLoader = (XComponentLoader) UnoRuntime

.queryInterface(XComponentLoader.class, desktop);

PropertyValue[] loadProps = new PropertyValue[0];

return xComponentLoader.loadComponentFromURL(loadUrl, "_blank", 0,

loadProps);

}

4.得到 XTextDocument

XComponent xEmptyWriterComponent = newDocComponent("swriter");

XTextDocument mxDoc = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class,

xEmptyWriterComponent);

5. 得到一個文檔的引用

XText mxDocText = mxDoc.getText();

6. 得到文檔的屬性列表

XPropertySet mxDocProps = (XPropertySet) UnoRuntime.queryInterface(

XPropertySet.class, mxDoc);

7. 建立光標,用來插入新的內(nèi)容。

XTextCursor mxDocCursor = mxDocText.createTextCursor();

XSentenceCursor xSentenceCursor = (XSentenceCursor) UnoRuntime

.queryInterface(XSentenceCursor.class, mxDocCursor);

XWordCursor xWordCursor = (XWordCursor) UnoRuntime.queryInterface(

XWordCursor.class, mxDocCursor);

8.得到光標屬性列表

XPropertySet xCursorProps = (XPropertySet) UnoRuntime .queryInterface(XPropertySet.class, mxDocCursor);

9.設(shè)置插入文字格式

xCursorProps.setPropertyValue("CharFontName", "宋體");

xCursorProps.setPropertyValue("CharWeight", new Float(FontWeight.BOLD));

xCursorProps.setPropertyValue("CharHeight", new Float(10.5));

// 居中顯示

xCursorProps.setPropertyValue("ParaAdjust", com.sun.star.style.ParagraphAdjust.CENTER);

10.在該光標處插入信息

mxDocText.insertString(xSentenceCursor, “Hello World", true);

11. 保存的關(guān)鍵代碼

protected void storeDocComponent(XComponent xDoc, String storeUrl)

throws java.lang.Exception {

XStorable xStorable = (XStorable) UnoRuntime.queryInterface(

XStorable.class, xDoc);

PropertyValue[] storeProps = new PropertyValue[1];

storeProps[0] = new PropertyValue();

storeProps[0].Name = "FilterName";

storeProps[0].Value = "MS Word 97";

openOfficeJavaLogger.debug("... store \"" + xDoc.toString() + "\" to \"" + storeUrl

+ "\".");

xStorable.storeAsURL(storeUrl, storeProps);

}

網(wǎng)頁名稱:uno牌java代碼 uno牌新玩法
本文鏈接:http://muchs.cn/article42/doedeec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站Google、品牌網(wǎng)站設(shè)計、微信小程序、網(wǎng)站設(shè)計公司、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化