📄 converter.java~3~
字号:
money_s = tmpArray[0]; money_t = tmpArray[1]; source = Integer.parseInt(tmpArray[2]); object = Integer.parseInt(tmpArray[3]); selected = Integer.parseInt(tmpArray[4]); updateURL = tmpArray[5]; rs.closeRecordStore(); //关闭数据库对象 } catch (RecordStoreException ex) { //捕捉到错误异常(第一次运行的时候数据库不存在) dbInitialize(); //初始化数据库 startApp(); //重新开始程序 } } void saveDb() { //保存程序运行状态 renewVar(); //更新变量 try { RecordStore rs = RecordStore.openRecordStore(dbName, true); byte bytes[]; //字符串得转成Byte型再写入数据库 bytes = newArrayByte(defCurrencyName); rs.setRecord(1, bytes, 0, bytes.length); bytes = newArrayByte(defRate); rs.setRecord(2, bytes, 0, bytes.length); bytes = newArrayByte(defOperation); rs.setRecord(3, bytes, 0, bytes.length); rs.closeRecordStore();// System.out.println("Database " + dbName + "Save Seucceed!"); } catch (RecordStoreException e) { } } //用于初始状态值 String defCurrencyName; String defRate; String defOperation; void dbInitialize() { //初始化数据库 //初始状态值 defCurrencyName = "Pound,Dollar,RMB,ECU"; defRate = "1,1.81,15.02,1.497" + "|0.55,1,8.27,0.825" + "|0.067,0.12,1,0.1" + "|0.668,1.21,10.035,1"; defOperation = "0,0,0,0,0,http://localhost/rate.asp"; try { RecordStore.deleteRecordStore(dbName); //管它有没有数据库,删了再说 } catch (RecordStoreException ex) { } try { //删了再建一个新的,现在这里的参数用了true,也就是数据库不存在的话系统就会帮你建一个. RecordStore rs = RecordStore.openRecordStore(dbName, true); byte bytes[]; //将初始数据存进数据库 bytes = newArrayByte(defCurrencyName); rs.addRecord(bytes, 0, bytes.length); bytes = newArrayByte(defRate); rs.addRecord(bytes, 0, bytes.length); bytes = newArrayByte(defOperation); rs.addRecord(bytes, 0, bytes.length); rs.closeRecordStore();// System.out.println("Database " + dbName + "Initialize Seucceed!"); } catch (RecordStoreException ex) { } } void renewVar() { //更新变量信息 defCurrencyName = ""; defRate = ""; defOperation = ""; for (int I = 0; I < CurrencyName.length; I++) { //更新货币单位 defCurrencyName += CurrencyName[I]; if (I < CurrencyName.length - 1) { defCurrencyName += ","; } } for (int I = 0; I < Rate.length; I++) { //更新汇率 for (int J = 0; J < Rate[I].length; J++) { defRate += Rate[I][J]; if (J < Rate[I].length - 1) { defRate += ","; } } if (I < Rate.length - 1) { defRate += "|"; } } //更新状态 defOperation += money_s + ","; defOperation += money_t + ","; defOperation += source + ","; defOperation += object + ","; defOperation += selected + ","; defOperation += updateURL; } void StartUpdate() { //联网更新汇率 try { //从指定网址读取汇率值 updateURL = input.getString(); HttpConnection hc = (HttpConnection) Connector.open(updateURL); //生成连接对像 DataInputStream dis = new DataInputStream(hc.openInputStream()); //获取输入流 String content = ""; int ic; while ( (ic = dis.read()) != -1) { //读取一行 if (ic == 13) { dis.read(); break; } content += (char) ic; //累加读取的字符 } if (content.compareTo("RateData") == 0) { //如果第一行不是RateData则该页面不是有效的汇率数据 content = ""; while ( (ic = dis.read()) != -1) { if (ic == 13) { dis.read(); break; } content += (char) ic; } CurrencyName = newArray(content, ","); //更新货币单位 content = ""; while ( (ic = dis.read()) != -1) { if (ic == 13) { dis.read(); break; } content += (char) ic; } Rate = newArrayPlanar(content, "|", ","); //更新汇率 alert.setString("Update rate succeed!"); //提示更新成功 display.setCurrent(alert); } else { alert.setString("Invalid URL or files!"); //提示无效的URL链接或无效的数据页 display.setCurrent(alert); } } catch (Exception e) { alert.setString("Connecting field!"); //提示联接失败 display.setCurrent(alert); } } static String[] newArray(String Str, String sign) { /* 以分隔符划分生成一维数组 其实就等于split函数,我当时翻的一本书叫<<Java2应用开发指南>>,里面介绍的String类 竟然找不到split这个函数,结果导致我错误的认为"Java居然不提供split",然后就傻傻 的自己写了一个同样功能的函数 这个错误还是今天整理这个程序的时候想起来查了一下SDK才发现的 不过还好这个功能并不复杂,自己写了也没花什么功夫,不过J2ME不支持浮点运算,这可写 死我了. */ int point = 1; int incept = 0; int count = 0; while (point > 0) { point = Str.indexOf(sign, point); point += 1; incept = point; count += 1; } String tmpArray[] = new String[count]; //确定数组大小 //复位初始位置 point = 1; incept = 0; int I = 0; while (point > 0) { point = Str.indexOf(sign, point); point += 1; if (point != 0) { //数组元素赋值 tmpArray[I] = Str.substring(incept, point - 1); } else { tmpArray[I] = Str.substring(incept); } I++; incept = point; } return tmpArray; } static String[][] newArrayPlanar(String Str, String firstSign, String secondSign) { //以分隔符划分生成二维数组 //这个Java好像没有吧,这回没白写 String firstArray[] = newArray(Str, firstSign); String secondArray[] = newArray(firstArray[0], secondSign); String tmpArray[][] = new String[firstArray.length][secondArray.length]; //确定数组大小 for (int I = 0; I < firstArray.length; I++) { secondArray = newArray(firstArray[I], secondSign); for (int J = 0; J < secondArray.length; J++) { tmpArray[I][J] = secondArray[J]; //数组元素赋值 } } return tmpArray; } static String[] newArrayLength(String original[], int length) { //用于动态改变数组大小 //如果增加一个功能,用户可以自己添加删除货币单位,就要用到 String tmpArray[] = new String[length]; System.arraycopy(original, 0, tmpArray, 0, original.length); return tmpArray; } static byte[] newArrayByte(String string) { //字符串转Byte数组 byte tmpArray[] = string.getBytes(); return tmpArray; }}class MyInput extends Canvas { //自定义输入框的类 /* 系统自带组件TextField不能很好的处理小数点输入问题 大多数情况输入小数点需要切换到字符模式下 这样用户输入带小数点的数值会很不方便 所有需要自已定义一个这样的输入框类 */ public StringBuffer value = new StringBuffer(""); //存放输入的字符 int maxLength = 10; //最大输入字符数 int X, Y; //输入框的坐标 public MyInput(int x, int y) { //构造方法1 X = x; Y = y; } public MyInput(int x, int y, String str) { //构造方法2 X = x; Y = y; input(str); //赋初值 } public void paint(Graphics screen) { screen.setColor(255, 255, 255); //设置前景色为白色 screen.fillRect(X, Y, getWidth() - 38, 12); //用白色填充指定区域 screen.setColor(0, 0, 0); //恢复前景色为黑色 screen.drawString(value.toString(), X + 2, Y - 2, 0); //将输入的字符串输出到指定位置 } void input(String str) { if (value.length() < maxLength) { //不超过最大字符数 value.append(str); //添加输入的字符 } } protected void keyReleased(int key) { switch (key) { //输入按键输入 case 48: input("0"); break; case 49: input("1"); break; case 50: input("2"); break; case 51: input("3"); break; case 52: input("4"); break; case 53: input("5"); break; case 54: input("6"); break; case 55: input("7"); break; case 56: input("8"); break; case 57: input("9"); break; case 35: //处理负号输入 if (value.toString().indexOf("-") < 0) { value.insert(0, "-"); } else { value.delete(0, 1); } break; case 42: //处理小数点输入 if (value.toString().indexOf(".") < 0 && value.length() > 0) { if ( (value.toString().indexOf("-") < 0 && value.length() >= 1) || (value.toString().indexOf("-") == 0 && value.length() >= 2)) { input("."); } } break; case -8: //退格清除 if (value.length() > 0) { value.delete(value.length() - 1, value.length()); } break; } repaint(); }}class Math {//+-*/这4个方法让我好是研究了一阵子,但我还是觉得方法笨了点//这个程序只用到了*/法public static String Add(String X, String Y) { //浮点数加法运算 //处理步骤: // 1.将浮点数的整数部分和小数部分分离出来 // 2.让小数位同位 // 3.整数部分运算 // 4.小数部分运算 // 5.处理小数位进位 // 6.返回运算结果。 long Xi, Xf; //X的整数部分Xi,X的小数部分Xf long Yi, Yf; //X的整数部分Yi,X的小数部分Yf long Ri, Rf; //Ri存放整数部分的运算结果,Rf存放小数部分的运算结果 int Xp, Yp; //Xp,Yp用于处理小数位长度 String a, b; //两个临时变量,用于处理小数位运算后进位,a为运算后的进位部分,b为运算后的小数部分 String tmp; //临时变量 Xi = Long.parseLong(getInt(X)); //X的整数部分 Xf = Long.parseLong(getFloat(X)); //X的小数部分 Xp = getFloat(X).length(); //X小数部分的位数
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -