package samples;
創(chuàng)新互聯(lián)建站自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務公司,擁有項目成都做網(wǎng)站、網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元莘縣做網(wǎng)站,已為上家服務,為莘縣各地企業(yè)和個人服務,聯(lián)系電話:028-86922220
/**
* @author sghitxia
*
*/
public class C {
public static void main(String[] args) {
String str = "(1+{1+2+3+[2+(4+5)+(9+3*7*6)]}+2+{3*5+[2+(4+5)+(9+3)]}+2)";
System.out.println(cacComplex(str));
}
private static double cacComplex(String str) {
if (str.equals(""))
return 0;
System.out.println("CAC:" + str);
str = str.replaceAll("[\\[\\{]", "(").replaceAll("[\\]\\}]", ")");
int cl = str.lastIndexOf('(');
if (cl == -1)
return cac(str);
int cr = str.indexOf(')', cl);
String left = str.substring(0, cl);
String right = str.substring(cr + 1);
String middle = str.substring(cl + 1, cr);
return cacComplex(left + cac(middle) + right);
}
public static double cac(String str) {
if (str.equals(""))
return 0;
int ml = str.indexOf('*');
int dl = str.indexOf('/');
if (ml == -1 dl == -1) {
return cacNoMD(str);
}
int index = ml == -1 ? dl : ml;
// 4+5*6*7+8
String left = str.substring(0, index);// 4+5
String m1 = lastNumber(left);
left = left.substring(0, left.length() - m1.length());
String right = str.substring(index + 1);// 6*7+8
String m2 = firstNumber(right);// m2:6
right = right.substring(m2.length());// *7+8
double d1 = Double.parseDouble(m1);
double d2 = Double.parseDouble(m2);
double tmp = 0;
if (index == ml) {
tmp = d1 * d2;
} else if (index == dl) {
tmp = d1 / d2;
}
return cac(left + tmp + right);
}
private static String lastNumber(String str) {
StringBuilder sb = new StringBuilder();
for (int i = str.length() - 1; i = 0; i--) {
char c = str.charAt(i);
if (!Character.isDigit(c) c != '.')
break;
sb.append(c);
}
return sb.reverse().toString();
}
private static String firstNumber(String str) {
StringBuilder sb = new StringBuilder();
for (char c : str.toCharArray()) {
if (!Character.isDigit(c) c != '.')
break;
sb.append(c);
}
return sb.toString();
}
private static double cacNoMD(String str) {
double ret = 0;
StringBuilder sb = new StringBuilder();
char sign = '+';
for (char c : (str + "+").toCharArray()) {
if (!Character.isDigit(c) c != '.') {
if (sb.length() == 0)
continue;
double tmp = Double.parseDouble(sb.toString());
if (sign == '+') {
ret += tmp;
} else {
ret -= tmp;
}
sb = new StringBuilder();
sign = c;
} else {
sb.append(c);
}
}
return ret;
}
}
public class Arithmetic {
public static void Ari(){
Scanner scan = new Scanner(System.in);
StringBuffer buffer = new StringBuffer();
DecimalFormat dec = new DecimalFormat("0.00");//格式化結(jié)果保留兩位小數(shù)
String all = "";//所有的計算表達式連在一起
System.out.println("請輸入表達式的個數(shù),只能為正整數(shù)");
int n = scan.nextInt();
System.out.println("請依次輸入要計算的表達式");
? ?for(int i=0;in+1;i++){
? ? buffer = buffer.append(scan.nextLine()+",");
? ?}
? ?all = buffer.substring(0, buffer.lastIndexOf(","));
? ?String allAri[] = all.split(",");
? ?String ari = "";//不同的算法表達式
? ?float add;//加法的計算結(jié)果
? ?float subtract;//減肥的計算結(jié)果
? ?float multi;//乘法的計算結(jié)果
? ?float divison;//除法的計算結(jié)果
? ?int model;//模運算的計算結(jié)果
? ?for(int j=0;jallAri.length;j++){
? ? ari = allAri[j];
? ? if(ari.contains("+")){
? ? String tempAry[] = ari.split("[+]");
? ? add = Float.valueOf(tempAry[0])+Float.valueOf(tempAry[1]);
? ? System.out.println(dec.format(add));
? ? }else if(ari.contains("-")){
? ? String tempAry[] = ari.split("[-]");
? ? subtract = Float.valueOf(tempAry[0])-Float.valueOf(tempAry[1]);
? ? System.out.println(dec.format(subtract));
? ? }else if(ari.contains("*")){
? ? String tempAry[] = ari.split("[*]");
? ? multi = Float.valueOf(tempAry[0])*Float.valueOf(tempAry[1]);
? ? System.out.println(dec.format(multi));
? ? }else if(ari.contains("/")){
? ? String tempAry[] = ari.split("[/]");
? ? divison = Float.valueOf(tempAry[0])/Float.valueOf(tempAry[1]);
? ? System.out.println(dec.format(divison));
? ? }else if(ari.contains("%")){
? ? String tempAry[] = ari.split("[%]");
? ? model = Integer.valueOf(tempAry[0])%Integer.valueOf(tempAry[1]);
? ? System.out.println(model);
? ? }
? ?}
}
public static void main(String[] args) {
Ari();
}
}
測試結(jié)果截圖如下:
你的測試用例的輸入的表達式的個數(shù)是4個,但下面的計算表達式好像少了一個,所以我加了一個除法的計算表達式,若理解有誤,還望說明。
首先要明白Vector和ArrayList在使用上非常相似,都可用來表示一組數(shù)量可變的對象應用的集合,并且可以隨機地訪問其中的元素。
Vector的方法都是同步的(Synchronized),是線程安全的(thread-safe),而ArrayList的方法不是,由于線程的同步必然要影響性能,因此,ArrayList的性能比Vector好。
當Vector或ArrayList中的元素超過它的初始大小時,Vector會將它的容量翻倍,而ArrayList只增加50%的大小,這樣,ArrayList就有利于節(jié)約內(nèi)存空間。
所以這里用arraylist吧
應該是用來存儲每道題的答案用,比如:
第一道題
int num1 = 1;
int num2 = 2;
int num3 = num1 + num2;
List nums = new ArrayList();
nums.add(num3); //將計算結(jié)果存入數(shù)組中
System.out.println(nums.get(0)); //取值
這只是思路,你借鑒下吧
我可以說一下思路:
取到所有下拉框的值,還有這個輸入框的值,比如第一個是: num1 第二個是運算符:* 第三個是:num2 第四個是結(jié)果: result
點擊提交,給一個點擊事件,把取到的值進行運算var cal= Integer.parseInt(num1)* Integer.parseInt(num2),cla是自己定義的,然后判斷程序計算的結(jié)果是否和輸入的結(jié)果相等,再給出相應的提示