|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
import java.util.Date; public class testcalc2 { String a; int len_of_str; int err; //err 用于发现哪个字符是出错字符就是第一个出错字符串的下标,初始值为-1,表示无错 int index; public testcalc2(String str) { a = str + "+"; len_of_str = a.length(); err = -1; index = 0; System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%%% " + a + len_of_str); } public double getnextnum() { int preindex = index, countofdot = 0; if(a.charAt(index) == \\\'-\\\') index++; if(!Character.isDigit(a.charAt(index))) { err = index; return 0; } while((index < len_of_str) && (Character.isDigit(a.charAt(index)) || a.charAt(index) == \\\'.\\\')) { if(a.charAt(index) == \\\'.\\\') { countofdot++; } index++; if(countofdot == 2) { err = index; return 0; } } return Double.valueOf(a.substring(preindex, index)).doubleValue(); } public char getnextop() { char ch = a.charAt(index); if((ch != \\\'+\\\') && (ch != \\\'-\\\') && (ch != \\\'*\\\') && (ch != \\\'/\\\')) { err = index; ch = \\\' \\\'; return ch; } index++; return ch; } public double calcuvalue() { long start = System.currentTimeMillis(); Date d = new Date(); long now = d.getTime(), dif; char ch; boolean minusflag = false, multiflag = false, dividflag = false; double total = 0, next = 0, num = 0; //next used to be * or / while(index < len_of_str) { num = getnextnum(); if(err != -1) { System.out.println("err!?! try to getnextnum but " + " the char at index " + err + " is wrong "); return 0; } System.out.println("index after " + index); ch = getnextop(); if(err != -1) { System.out.println("err!?! try to getnextop but " + " the char at index " + err + " is wrong "); return 0; } System.out.println("index after " + index); switch (ch) { case \\\'+\\\': if(multiflag) { next = next * num; } else if(dividflag) { next = next / num; } else { next = num; } if(minusflag) { next = -next; } total = total + next; minusflag = false; multiflag = false; dividflag = false; break; case \\\'-\\\': if(multiflag) { next = next * num; } else if(dividflag) { next = next / num; } else { next = num; } if(minusflag) { next = -next; } total = total + next; minusflag = true; multiflag = false; dividflag = false; break; case \\\'*\\\': if(multiflag) { next = next * num; } else if(dividflag) { next = next / num; } else { next = num; } multiflag = true; dividflag = false; break; case \\\'/\\\': if(multiflag) { next = next * num; } else if(dividflag) { next = next / num; } else { next = num; } dividflag = true; multiflag = false; break; default: //impossible ,already has err } System.out.println("ch " + ch + " num " + num + " total " + total + " next " + next + " -" + minusflag + " *" + multiflag + " /" + dividflag); } //while return total; } 返回类别: 教程 上一教程: 在JAVA应用程序中如何实现FTP的功能 (转) 下一教程: Java Learn Steps 您可以阅读与"一个简朴的表达式求值类,java"相关的教程: · 用正则表达式判定一个简朴的用户登陆的例子 · JavaScript正则表达式 · 用java实现简朴的email正则表达式判定 · JAVA正则表达式4种常用功能 · Java 正则表达式自义bean |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |