第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

四則混合運(yùn)算算法,不足之處請(qǐng)斧正

標(biāo)簽:
Java Android

最近在做一个计算器应用,但是其中的四则混合运算略有难度,于是尝试着自己写了一下四则混合运算的算法。运行初步觉得较为好用,当然,我不是大神,写的肯定会有许多不足之处,还请大家不吝赐教。

package tye;

import java.util.Scanner;

public class Mac {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //应输入规范的四则混合算式,不含括号
        String s = sc.next();
        Mac m = new Mac();
        System.out.println(m.getMath(s));
    }

    private float getMath(String s) {
        String[] mathString = s.split("[\\+,\\-,\\*,/]");
        float[] value = getValue(s, mathString.length);
        float[] smlValue = getSmlValue(s, value);
        float sum = 0;
        for (int i = 0; i < smlValue.length; i++) {
            sum += smlValue[i];
        }
        return sum;
    }

    private float[] getSmlValue(String s, float[] value) {
        char[] flchar = s.toCharArray();
        char[] fuhao = new char[value.length - 1];
        // 提取符号
        for (int i = 0, j = 0; i < flchar.length; i++) {
            if (flchar[i] == '+' || flchar[i] == '-' || flchar[i] == '*'
                    || flchar[i] == '/') {
                fuhao[j] = flchar[i];
                ++j;
            }
        }
        float[] data = new float[20];
        float[] ret = new float[20];

        boolean isNext = true;// 判断是否中断连乘连除
        // 处理所有乘除
        for (int i = 0, j = 0; i < fuhao.length; i++) {
            if (fuhao[i] == '*') {
                if (isNext) {
                    data[j] = value[i] * value[i + 1];
                } else {
                    data[j - 1] = data[j - 1] * value[i + 1];
                    --j;
                }
                ++j;
                isNext = false;
            } else if (fuhao[i] == '/') {
                if (isNext) {
                    data[j] = value[i] / value[i + 1];
                } else {
                    data[j - 1] = data[j - 1] / value[i + 1];
                    --j;
                }
                ++j;
                isNext = false;
            } else {
                isNext = true;
            }
        }

        // 组合新的数组
        float[] newRt = new float[20];
        for (int i = 0, j = 0, n = 0; i < fuhao.length; i++) {
            if (i == 0 && fuhao[i] != '*' && fuhao[i] != '/') {
                newRt[j] = value[i];
                ++j;
                if(fuhao.length>1){
                if(fuhao[i+1]!= '*'
                    && fuhao[i + 1] != '/'){
                    newRt[j]=value[i+1];
                    ++j;
                }}else{
                    newRt[j]=value[i+1];
                }
            } else if (i <= fuhao.length - 2 && fuhao[i] != '*'
                    && fuhao[i] != '/' && fuhao[i + 1] != '*'
                    && fuhao[i + 1] != '/') {
                newRt[j] = value[i + 1];
                ++j;
            } else if (i > fuhao.length - 2 && fuhao[i] != '*'
                    && fuhao[i] != '/') {
                newRt[j] = value[i + 1];
                ++j;
            } else {
                newRt[j] = data[n];
                ++n;
                ++j;
            }

        }

        return newRt;
    }

    //把所有非符号字符转为浮点数,且保留正负值
    private float[] getValue(String s, int length) {
        float[] flValue = new float[length];
        char[] flchar = s.toCharArray();
        int start = 0;
        int end = 0;
        boolean nextisNun = false;
        for (int i = 0, j = 0; i < flchar.length; i++) {
            if (flchar[i] == '+' || flchar[i] == '-' || flchar[i] == '*'
                    || flchar[i] == '/') {
                end = i;
                String str = s.substring(start, end);
                if (str.equals("") || str == null) {
                    str = "0";
                }
                if (nextisNun) {
                    flValue[j] = 0 - Float.valueOf(str);
                    ++j;
                } else {
                    flValue[j] = Float.valueOf(str);
                    ++j;
                }

                if (flchar[i] == '-') {
                    nextisNun = true;
                } else {
                    nextisNun = false;
                }
                start = end + 1;
            }
        }

        if (nextisNun) {
            flValue[flValue.length - 1] = 0 - Float.valueOf(s.substring(start,
                    flchar.length));
        } else {
            flValue[flValue.length - 1] = Float.valueOf(s.substring(start,
                    flchar.length));
        }
        return flValue;
    }
}

2017/5/5

點(diǎn)擊查看更多內(nèi)容
4人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消