发布网友 发布时间:2022-04-22 14:53
共4个回答
热心网友 时间:2023-10-19 01:14
package day02;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Scanner;
public class Work01 {
public static boolean isDigit(String str) { // 判断操作数是不是纯数字,会不会有字母
for (int i = 0; i < str.length(); i++) {
if ((str.charAt(i)>'9'||str.charAt(i)<'1')&&str.charAt(i)!='.') {
return false; //return false 表明含字母
}
}
return true; //return true 表明只有数字、小数点
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.next(); //输入的计算表达式
int strIndex = -1; //表达式的操作符下标
for(int i=0;i<str.length();i++){
if(str.charAt(i)=='+'||str.charAt(i)=='-'
||str.charAt(i)=='*'||str.charAt(i)=='/'){
strIndex = i; //找出操作符下标具体值
break;
}
}
if(strIndex==-1){
System.out.println("不是数学计算表达式"); //如果找不到操作符
} else if(strIndex==str.length()-1||strIndex==0){
System.out.println("不是数学计算表达式"); //如果只有左边或只有右边的操作数
} else {
String strA = str.substring(0, strIndex); //提取左边操作数
String strB = str.substring(strIndex+1, str.length()); //提取右边操作数
if(isDigit(strA)&&isDigit(strB)){ //如果两边的操作数都没有字母
double doubleA = Double.parseDouble(strA); //转为double类型以计算
double doubleB = Double.parseDouble(strB); //转为double类型以计算
if(str.charAt(strIndex)=='+'){
System.out.println(doubleA+doubleB); //如果是加法表达式则做加运算
} else if(str.charAt(strIndex)=='-'){
System.out.println(doubleA-doubleB); //如果是减法表达式则做减运算
} else if(str.charAt(strIndex)=='*'){
System.out.println(doubleA*doubleB); //如果是乘法表达式则做乘运算
} else
System.out.println(doubleA/doubleB); //如果是除法表达式则做除运算
} else {
System.out.println("不是数学计算表达式"); //如果操作数含字母
}
}
}
}
热心网友 时间:2023-10-19 01:15
import java.util.Scanner;
热心网友 时间:2023-10-19 01:15
这个要用到堆栈数据结构热心网友 时间:2023-10-19 01:16
自己多看看java视频就知道了