uno牌java代码 uno牌新玩法
编写一个java程序,求代码
这题貌似无聊,不过细想也涉及很多JAVA的编程基础知识。
目前成都创新互联已为近1000家的企业提供了网站建设、域名、虚拟主机、网站托管、服务器托管、企业网站设计、酉阳土家族苗族网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
这位triompha的这段程序好像也没有完全按照提问者的要求作答。
他这段程序的运行结果是:
所以我这里也写了一个,先看运行结果:
上代码:
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,"-"));
}
//用于计算字符数并对其
public static String spaceStr(String s){
String str = "";
for (int i = 0; i s.length()*2+2; i++) {
str += " ";
}
return str;
}
//转换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;
}
//转换字符,末位求反
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构造方法输出值分析
main方法中我给你加上注释了,其实只要注意两点,1,初始化子类必先初始化父类 2.静态变量y始终只有一份就可以了
==================================
public class Gamma {
public static void main(String[] args){
Uno a = new Uno();//构造方法,为父类构造方法,初始化中y的值+1 y=6
a.inc();//调用父类的inc方法,x的值+1 x为int,初始值为0 +1后 x=1
System.out.println(a.getTotale());//打印x+y= 1+6 = 7
a = new Due();//调用子类构造方法,初始化子类必先初始化父类,那么 x=0;y=5, 但要注意,y为static,所以共享一份,此时y经过上面的++后已经为6;父类构造方法y++后,y=7
a.inc();//调用子类的inc方法,首先super.inc调用父类,x++ 后 x=1 w++后 w=8
System.out.println(a.getTotale()); //调用子类getTOTAL方法,方法中调用父类的方法 x+y=1+7=8 w+8=8+8=16
Due b = new Due();//调用子类的构造方法,必先初始化父类 y++ 因为static y此时为7 ++后 y=8
b.inc();//b.inc首先调用了父类 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的所有功能,比如创建doc文档,插入文字,设置文字格式等等。
1. OpenOffice 给程序员提供了一个叫UNO (UniversalNetwork Objects)的组件技术.我理解的UNO: OpenOffice 类似于web程序中的服务器,程序员写的代码类似于客户端,利用UNO提供的接口和服务去完成对OpenOffice文档的操作。所以写程序首先要搭建 UNO环境:
1. 下载 OpenOffice
2.复制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 环境。
补充: 安装了SDK后, java, c++帮助文档,样例程序,其他关于sdk的信息 都放在本地openOffice安装路径一个叫sdk目录下面,enjoy it !
总结一下已经实现的功能和碰到的问题汇总:
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!
解决办法: 黑其源代码, 看了源代码就会发现其实OpenOffice是在寻找本地的soffice的shell文件,所以弄个变量来保存soffice在系统中的路径,重新写一 个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. 建立光标,用来插入新的内容。
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.设置插入文字格式
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. 保存的关键代码
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);
}
文章标题:uno牌java代码 uno牌新玩法
文章起源:http://scyanting.com/article/doedeec.html