2016-09-29 138 views
0

所以我很好奇我在這裏失去了什麼。我有一個學校的程序,部分程序要求我測量輸入字符串的長度。我把它設置爲「if String == 6」,你可以在我的代碼中看到。我的教授寧願將它存儲在一個變量中,然後使用.length方法來測量它。他的確切說法如下:「要查看票號是否大於六個字符,則需要將其存儲在一個變量中,然後在第19行中,可以使用ticket.length == 6進行檢查。」創建一個變量來測量字符串的長度

我試着用他的方法,我把「ticket_number.length == 6」。但是會返回一個錯誤。林不知道爲什麼,是不是「ticket_number」需要測量的變量?還是我需要爲票證長度創建另一個變量?我確信有一個簡單的答案,我似乎無法找到它。預先感謝任何和所有幫助!

begin 
    print "Please enter your six-digit ticket number." 

    ticket_number=gets.chomp.to_i 

    ones_digit=ticket_number%10 

    truncated_number=ticket_number/10.floor 

    remainder=truncated_number%7 

    if String=6 and ones_digit==remainder and ticket_number>0 

    print "Your ticket number is valid." 

    else 
    print "Your ticket number is invalid." 
    end 
end while ticket_number>0 
+0

我認爲它測量了字符串的長度?或者說,確保它是= 6 –

+0

當您從頭開始輸入輸入時,您已經有了一個變量。 – BoeNoe

+1

你應該發佈你如何運行這個程序的細節以及你給的是什麼輸入,併發布完整的確切的錯誤信息。即使它看起來像你是無稽之談,它會給程序員更多的經驗提供一個很好的暗示錯誤的提示。見[mcve]。 –

回答

3

有一對夫婦在這裏的問題,但最大的一個是,轉換成整數意味着你已經沒收你的機會來測試對長度:

ticket_number = gets.chomp 

if (ticket_number.length != 6) 
    puts "Your ticket number must be six digits" 

    next 
end 

你可以在事後轉換:

ticket_number = ticket_number.to_i 

然後做你的數學。

理想情況下,您可以將此函數包裝在一個函數中,根據票證號碼,將根據有效性返回truefalse。這將它從顯示和循環邏輯中解耦,簡化了事情。

+0

謝謝,我覺得這很簡單。我對這一切都非常陌生,因爲在不到三週的時間裏就有新的了。 –

+0

新生沒什麼問題。對於剛剛學習的人來說,Ruby特別寬容,但不要忘記它不能做不理解其含義的事情。儘管起初錯誤可能會讓人困惑,但他們很快就會發現一些模式,並且最常見的方法是丟失方法。檢查與你交互的任何對象的'.class',然後通常可以查看該類的文檔以獲取有效方法的列表。例如:[Integer](https://ruby-doc.org/core-2.3.1/Integer.html)和[String](http://ruby-doc.org/core-2.3.1/String。 HTML)。 – tadman

相關問題