搜索

求java 怎么写

发布网友 发布时间: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;
//很多种写法,参照例子自己根据自己需求改好。
public class Work1{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入,例如:(1+1)");
        String inputStr = sc.next();
        try{
            char[] arr = inputStr.toCharArray();
            String result = null;
            switch(arr[1]){
                case '+':
                    result = String.valueOf(Double.parseDouble(arr[0]+"") + Double.parseDouble(arr[2]+""));
                    break;
                case '-': 
                    result = String.valueOf(Double.parseDouble(arr[0]+"") - Double.parseDouble(arr[2]+""));
                    break;
                case '*':
                    result = String.valueOf(Double.parseDouble(arr[0]+"") + Double.parseDouble(arr[2]+""));
                    break;
                case '/':
                    result = String.valueOf(Double.parseDouble(arr[0]+"") + Double.parseDouble(arr[2]+""));
                    break;
                default:
                    System.err.println("不是+、-、*、/运算");
                    return;
            }
            System.out.println(result);
        }catch(Exception e){
            System.err.println("不是数学计算表达式");
        }
    }
}

热心网友 时间:2023-10-19 01:15

这个要用到堆栈数据结构
先将表达式转换成后缀式,然后求值
请参考,堆栈应用,表达式求值。

很麻烦的,50也太少了。

热心网友 时间:2023-10-19 01:16

自己多看看java视频就知道了
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
Top