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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go 程序打印星號而不是實(shí)際字符

Go 程序打印星號而不是實(shí)際字符

Go
達(dá)令說 2022-12-13 16:01:15
我正在編寫一個將后綴表達(dá)式轉(zhuǎn)換為其前綴形式的程序(因此它應(yīng)該將此“ABC/-AK/L-*”轉(zhuǎn)換為此“*-A/BC-/AKL”。規(guī)則很簡單:如果它是一個字母或一個數(shù)字(操作數(shù)),然后它被壓入堆棧,如果它是一個運(yùn)算符,那么堆棧的最后兩個字符(比如說op1(最后一個)和op2(最后一個之后的那個))是被彈出,然后與運(yùn)算符連接 (temp = operator + op2 + op1),然后將此 temp 壓入堆棧。問題是當(dāng)使用 pop 時,操作數(shù)變成星號,我不知道為什么。也許需要指針?有人可以告訴我我做錯了什么嗎?非常感謝!輸入:“ABC/-AK/L-*”預(yù)期輸出:“*-A/BC-/AKL”觀察到的輸出:“[***]”import (    "fmt")type Stack []stringfunc (s *Stack) isEmpty() bool {    return len(*s) == 0}func (s *Stack) push(value string) {    *s = append(*s, value)}func (s *Stack) pop() (string, bool) {    if s.isEmpty() {        return "", false    } else {        elementIndex := len(*s) - 1        element := (*s)[elementIndex]        *s = (*s)[:elementIndex]        return element, true    }}func isOperator(character string) bool {    switch character {    case "+", "-", "*", "/":        return true    default:        return false    }}func input() {    var stack Stack    fmt.Print("Please input the equation without spaces: \n")    input := "ABC/-AK/L-*"    for _, character := range input {        valueCheck := isOperator(string(character))        if valueCheck == true {            operand1 := input[len(input)-1]            stack.pop()            operand2 := input[len(input)-1]            stack.pop()            var temp string            temp = string(character) + string(operand2) + string(operand1)            stack.push(temp)        } else {            stack.push(string(character))        }    }    fmt.Print(stack)}func main() {    input()}
查看完整描述

1 回答

?
尚方寶劍之說

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個贊

func input() {

    var stack Stack

    fmt.Print("Please input the equation without spaces: \n")

    input := "ABC/-AK/L-*"



    for _, character := range input {

        valueCheck := isOperator(string(character))

        if valueCheck {

            operand1 := stack[len(stack)-1]

            stack.pop()

            operand2 := stack[len(stack)-1]

            stack.pop()



            temp := string(character) + string(operand2) + string(operand1)

            stack.push(temp)


        } else {

            stack.push(string(character))

        }

    }

這將為您提供您所期望的。


一些旁注:


if valueCheck == true太多了,因?yàn)関alueCheck是布爾類型

var temp string

temp = string(character) + string(operand2) + string(operand1)

也有點(diǎn)冗長


temp := string(character) + string(operand2) + string(operand1)

足夠的。


并且最好熟悉一下dlv debugger,這樣下次你迷茫的時候會節(jié)省一些時間和精力。


查看完整回答
反對 回復(fù) 2022-12-13
  • 1 回答
  • 0 關(guān)注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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