题目:从控制台输入 n个表达式,判断哪个表达式绝对值最小。表达式格式:a+b,a*b,a-b,a/b;
这是我自己写的代码,希望和大家交流。
package com.li.test.classes;
/**
* 从控制台输入 n个表达式,判断哪个表达式绝对值最小。表达式格式:a+b,a*b,a-b,a/b;
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Test {
public String s = "ddd";
public String getString() {
BufferedReader bu = new BufferedReader(new InputStreamReader(System.in));
try {
s = bu.readLine();
}
catch (IOException e) {
e.getMessage();
}
return s;
}
public String[] stringToint(String str) {
return str.split(" ");
}
public boolean compare(float a, float b) {
if (a <= b) {
return false;
}
else {
return true;
}
// return a;
}
public int parser(String[] s) {
float Dvalue = Integer.MAX_VALUE;
int x = 0;
Stack stack = new Stack();
for (int j = 0; j < s.length; j++) {
String str = s[j];
char[] chararray = str.toCharArray();
int index = 1;
for (int i = 0; i < chararray.length; i++) {
char c = chararray[i];
if (!(c >= 48 && c <= 57)) {
index = i;
System.out.println(c);
stack.push(c);
}
}
String sssss = str.substring(0, index);
System.out.println(sssss);
int int1 = Integer.parseInt(str.substring(0, index));
int int2 = Integer.parseInt(str.substring(index + 1, str.length()));
char c = (char) stack.pop().toString().charAt(0);
switch (c) {
case '/':
if (compare(Dvalue, (float) int1 / int2)) {
Dvalue = (float) int1 / int2;
x = j;
}
break;
case '*':
if (compare(Dvalue, (float) int1 * int2)) {
Dvalue = (float) int1 * int2;
x = j;
}
break;
case '+':
if (compare(Dvalue, (float) int1 + int2)) {
Dvalue = (float) int1 + int2;
x = j;
}
break;
case '-':
if (compare(Dvalue, (float) int1 - int2)) {
Dvalue = (float) int1 - int2;
x = j;
}
break;
}
System.out.println("Dvalue:" + Dvalue + " x: " + x);
}
// System.out.println(Dvalue);
return x;
}
public String toString() {
return "ss";
}
public static void main(String args[]) {
Test test = new Test();
String[] str = test.stringToint(test.getString());
for (String s : str)
System.out.println(s);
int index = test.parser(str);
System.out.println(index);
}
}