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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

字符串加減法程序

字符串加減法程序

浮云間 2021-12-01 19:07:21
我寫(xiě)了一個(gè)程序,我想對(duì)字符串進(jìn)行加減運(yùn)算,其中所有字符串的長(zhǎng)度都是四,看起來(lái)像“+002”、“+569”、“-022”、“-789”等。我已經(jīng)嘗試在不使用任何乘法、除法或余數(shù)的情況下執(zhí)行此操作,但僅使用加法和減法作為運(yùn)算,但我的問(wèn)題是某些情況還不起作用,我不明白為什么或如何解決它因?yàn)橛眠@么長(zhǎng)的代碼很難看清問(wèn)題究竟出在哪里以及我應(yīng)該改變什么。所以這里是相關(guān)的方法:public static String add(String s1, String s2) {        int number;        int[] s = new int[4];        String result = "";        if (s1.contains("+") && s2.contains("+")) {            result = "+";            for (int i = 1; i < s1.length(); ++i) {                if (!(s1.charAt(i) == 0 || s2.charAt(i) == 0)) {                    if ((int) (s1.charAt(i)) + (int) (s2.charAt(i)) - 96 < 10) s[i] = (int) (s1.charAt(i)) + (int) (s2.charAt(i)) - 96;                    else {                        s[i] = (s1.charAt(i)) + (int) (s2.charAt(i)) - 106;                    ++s[i - 1];                    }                }                else if (s1.charAt(i) != 0 && s2.charAt(i) != 0) {                    s[i] = (int) (s1.charAt(i)) + (int) (s2.charAt(i)) - 96;                }            }        }        else if (s1.contains("-") && s1.contains("-")) {            result = "-";            for (int i = 1; i < s1.length(); ++i) {                if ((!(s1.charAt(i) == 0 || s2.charAt(i) == 0))) {                    if ((int) (s1.charAt(i)) + (int) (s2.charAt(i)) - 96 < 10) s[i] = (int) (s1.charAt(i)) + (int) (s2.charAt(i)) - 96;                    else {                        s[i] = (s1.charAt(i)) + (int) (s2.charAt(i)) - 106;                    ++s[i - 1];                    }                }                else if (s1.charAt(i) != 0 && s2.charAt(i) != 0) {                    s[i] = (int) (s1.charAt(i)) + (int) (s2.charAt(i)) - 96;                }            }        }
查看完整描述

3 回答

?
揚(yáng)帆大魚(yú)

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊

由于您可以使用 charAt(),您可以自行轉(zhuǎn)換字符串:


// String s1 = "+123";

int d1 = (s1.charAt(1) - '0') * 100;

int d2 = (s1.charAt(2) - '0') * 10;

int d3 = (s1.charAt(3) - '0');

int num = d1 + d2 + d3;

然后你可以用這個(gè)數(shù)字來(lái)計(jì)算。


查看完整回答
反對(duì) 回復(fù) 2021-12-01
?
暮色呼如

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊

您提到某些情況不起作用,您不確定為什么。我認(rèn)為這與您的 if 語(yǔ)句有關(guān)。

例如第一個(gè) if 在第一個(gè)循環(huán)中:

 if (!(s1.charAt(i) == 0 || s2.charAt(i) == 0)) {...}

將在與 else 完全相同的情況下評(píng)估為真,如果緊隨其后:

else if (s1.charAt(i) != 0 && s2.charAt(i) != 0) {...}

(因?yàn)樵诘谝环N情況下,您首先評(píng)估任一值是否等于零,然后反轉(zhuǎn)結(jié)果)。

然后第一個(gè)嵌套 if 在第一個(gè)循環(huán)中:

if ((int) (s1.charAt(i)) + (int) (s2.charAt(i)) - 96 < 10) {...}

在我看來(lái),這將始終評(píng)估為真,因?yàn)槟皇菑膬蓚€(gè)字符串中取出一個(gè)字符。所以加法可能的最高結(jié)果是 18。從它減去 96,它肯定會(huì)小于 10。

為了調(diào)試它并找到問(wèn)題,我建議您首先仔細(xì)檢查所有 if 語(yǔ)句。在評(píng)論中寫(xiě)下,甚至制作一個(gè)圖表來(lái)確定何時(shí)應(yīng)該達(dá)到某個(gè)步驟以及在那里應(yīng)該發(fā)生什么。此外,如果您還沒(méi)有使用可能有幫助的 IDE,因?yàn)樗鼤?huì)提醒您注意邏輯中的一些問(wèn)題。


查看完整回答
反對(duì) 回復(fù) 2021-12-01
?
慕沐林林

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊

這行得通嗎?


private static String add(String s1, String s2) {

    return intToString(stringToInt(s1) + stringToInt(s2));

}


private static int stringToInt(String string) {

    int multiplicand;

    int i = 0;


    multiplicand = string.charAt(0) == '+' ? 1 : -1;


    i += (string.charAt(1) - '0') * 100;

    i += (string.charAt(2) - '0') * 10;

    i += (string.charAt(3) - '0');


    return i * multiplicand;

}


private static String intToString(int i) {

    StringBuilder sb = new StringBuilder();


    sb.append(i >= 0 ? "+" : "-");


    i = Math.abs(i);


    sb.append(i / 100);

    sb.append(i / 10 - (i / 100 * 10));

    sb.append(i - (i / 10 * 10));


    return sb.toString();

}


查看完整回答
反對(duì) 回復(fù) 2021-12-01
  • 3 回答
  • 0 關(guān)注
  • 190 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(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)